VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 6084|回复: 9

[求助] 如何强制删除文件夹注意不是文件

[复制链接]
 楼主| 发表于 2009-11-22 16:55:40 | 显示全部楼层 |阅读模式
找了几个源码都是强制删除文件,没有强制删除文件夹的?
 楼主| 发表于 2009-11-22 20:15:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-22 23:00:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2009-11-23 10:37:14 | 显示全部楼层
我只会删除文件夹,不会强制.要强制,我也只能便历内存,发现该文件夹内的文件被占用,就卸载,最后再删除一下文件夹
回复 支持 反对

使用道具 举报

发表于 2009-11-23 15:59:59 | 显示全部楼层
'此方法强行删除文件夹
Public Enum FO_Operation
    FO_MOVE = 1
    FO_COPY = 2
    FO_DELETE = 3
    FO_RENAME = 4
End Enum

Public Enum FOFlags
    FOF_MULTIDESTFILES = &H1      'Destination specifies multiple files
    FOF_SILENT = &H4              'Don't display progress dialog
    FOF_RENAMEONCOLLISION = &H8  'Rename if destination already exists
    FOF_NOCONFIRMATION = &H10    'Don't prompt user
    FOF_WANTMAPPINGHANDLE = &H20  'Fill in hNameMappings member
    FOF_ALLOWUNDO = &H40          'Store undo information if possible
    FOF_FILESONLY = &H80          'On *.*, don't copy directories
    FOF_SIMPLEPROGRESS = &H100    'Don't show name of each file
    FOF_NOCONFIRMMKDIR = &H200    'Don't confirm making any needed dirs
End Enum

Public Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long '  only used if FOF_SIMPLEPROGRESS
End Type

Private op As SHFILEOPSTRUCT
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
回复 支持 反对

使用道具 举报

发表于 2009-11-23 16:59:13 | 显示全部楼层
要是删除文件夹就必须先把文件夹内的所有文件和文件夹全部删除才行

我原来写过一个删除文件夹的Function 遍历目录删除内容的 如果是强制删除的话 就是加强版的删除文件夹呗

我的那个Function地址:
http://black-feather.cn/post/38.shtml
回复 支持 反对

使用道具 举报

发表于 2009-11-24 08:00:17 | 显示全部楼层
'此方法强行删除文件夹Public Enum FO_Operation    FO_MOVE = 1    FO_COPY = 2    FO_DELETE = 3    FO_RENAME = 4End EnumPublic Enum FOFlags    FOF_MULTIDESTFILES = &H1      'Destination ...iamxiang 发表于 2009-11-23 15:59
这个可以删除文件夹,但没有强制,如果文件正在被使用,就没办法了!
回复 支持 反对

使用道具 举报

发表于 2009-11-24 10:26:22 | 显示全部楼层
1# dljdlj70000

[经验技巧] 用API一次删除、移动、复制、改名含有文件及子目录的文件夹API, 目录, 文件, 删除

  • '**************************************************************************
  • '**模 块 名:工程1 - Form1
  • '**说    明:魔灵圣域 版权所有2008 - 2009(C) by icecept(魔灵)
  • '**创 建 人:icecept(郭卫)
  • '**日    期:2008-11-18 01:10:06
  • '**修 改 人:icecept(郭卫)
  • '**日    期:
  • '**描    述:icecept(魔灵)制作
  • '**版    本:V1.0.0    http://icecept.blog.sohu.com
  • '*************************************************************************
  • Option Explicit
  • '用API一次删除、移动、复制、改名含有文件及子目录的文件夹
  • Private Const FO_MOVE = &H1                '移动
  • Private Const FO_COPY = &H2                '复制
  • Private Const FO_DELETE = &H3              '删除
  • Private Const FO_RENAME = &H4              '改名
  • Private Const FOF_NOCONFIRMATION = &H10    '没有提示
  • Private Const FOF_SILENT = &H4
  • Private Const FOF_NOERRORUI = &H400
  • Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
  • Private Type SHFILEOPSTRUCT
  •     hwnd  As Long         '句柄
  •     wFunc  As Long        '操作命令
  •     pFrom  As String      '源文件夹
  •     pTo  As String        '目标文件夹
  •     fFlags  As Integer    '
  •     fAnyOperationsAborted  As Long     '不详
  •     hNameMappings  As Long             '不详
  •     lpszProgressTitle  As String   '   当取 FOF_SIMPLEPROGRESS 时,此参数才被使用
  • End Type
  • Private Function PathOperate(ByVal FormPath As String, ByVal ToPath As String, ByVal sOrder As String) As Boolean
  •     On Error Resume Next
  •     Dim udtPath   As SHFILEOPSTRUCT
  •     udtPath.hwnd = 0
  •     udtPath.wFunc = sOrder
  •     udtPath.pFrom = FormPath
  •     udtPath.pTo = ToPath
  •     udtPath.fFlags = FOF_NOCONFIRMATION Or FOF_SILENT Or FOF_NOERRORUI
  •     PathOperate = Not CBool(SHFileOperation(udtPath))
  • End Function
  • Private Sub Command1_Click()
  •     '一次移动含有文件的目录或文件夹
  •     '把c盘文件夹a及其其中的文件夹及目录移动到d盘的文件夹e中
  •     PathOperate "c:\a", "d:\e", FO_MOVE
  • End Sub
  • Private Sub Command2_Click()
  •     '一次移动含有文件的目录或文件夹
  •     '把c盘文件夹a及其中的文件夹及目录复制到d盘的文件夹e中
  •     PathOperate "c:\a", "d:\e", FO_COPY
  • End Sub
  • Private Sub Command3_Click()
  •     '一次删除含有文件的目录或文件夹
  •     '把c盘文件夹a中的文件夹及目录移动到d盘的文件夹e中
  •     PathOperate "c:\a", vbNullString, FO_DELETE
  • End Sub
  • Private Sub Command4_Click()
  •     '对含有子文件夹的目录改名
  •     '把c盘文件夹a及其其中的文件夹及目录到d盘的文件夹e中
  •     PathOperate "c:\a", "c:\e", FO_RENAME
  • End Sub
一次删除、复制、移动文件夹.rar (6.12 KB)


详请请看:http://hi.baidu.com/icecept/blog/item/85d1d9453d7dfd38869473ab.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-24 21:23:33 | 显示全部楼层
谢谢诸位 ,情况是这样的,这个文件夹被其他软件使用了,即使删除里面的所有文件,就剩一个空的文件夹,用正常的方法不能删除,好像必须要用驱动?我技术不行,想修改强制删除文件的有驱动那些源代码,想看看能否强制删除文件夹,改了一次,蓝屏了,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-24 21:26:45 | 显示全部楼层
8# icecept
谢谢 这个方法,我试过,不能删除被使用的文件夹
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-9-22 01:44

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表