VB 怎样搜索并且删除文件夹及文件夹下面的所有文件?
比如说要删除文件夹1245564及下面的文件夹和文件.事先不知道文件夹1245564的路径.
[解决办法]
SHFileOperation
函数状态: 正式函数
函数功能描述:文件操作,与 Shell 的动作相同.
函数原型:
WINSHELLAPI int WINAPI SHFileOperation (LPSHFILEOPSTRUCT lpFIleOp);
声明:
Private Declare Function SHFileOperation Lib "shell32.dll " Alias "SHFileOperationA " (lpFileOp As SHFILEOPSTRUCT) As Long
参数:
Private Type SHFILEOPSTRUCT
HWND hwnd; //父窗口句柄
UINT wFunc; //要执行的动作
LPCTSTR pFrom; //源文件路径,可以是多个文件
LPCTSTR pTo; //目标路径,可以是路径或文件名
FILEOP_FLAGS fFlags; //标志,附加选项
BOOL fAnyOperationsAborted; //是否可被中断
LPVOID hNameMappings; //文件映射名字,可在其它 Shell 函数中使用
LPCTSTR lpszProgressTitle; //只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。
End Type
wFunc 可以为:
Const FO_MOVE = &H1 移动文件
Const FO_COPY = &H2 复制文件
Const FO_DELETE = &H3 删除文件,只使用 pFrom
Const FO_RENAME = &H4 文件重命名
fFlags可以为:
Const FOF_CREATEPROGRESSDLG = &H0 //
Const FOF_MULTIDESTFILES = &H1 //pTo 指定了多个目标文件,而不是单个目录
Const FOF_CONFIRMMOUSE = &H2
Const FOF_SILENT = &H4 // 不显示一个进度对话框
COnst FOF_RENAMEONCOLLISION = &H8 // 碰到有抵触的名字时,自动分配前缀
Const FOF_NOCONFIRMATION = &H10 // 不对用户显示提示
Const FOF_WANTMAPPINGHANDLE = &H20 // 填充 hNameMappings 字段,必须使用 SHFreeNameMappings 释放
Const FOF_ALLOWUNDO = &H40 // 允许撤销
Const FOF_FILESONLY = &H80 // 使用 *.* 时, 只对文件操作
Const FOF_SIMPLEPROGRESS = &H100 // 简单进度条,意味者不显示文件名。
Const FOF_NOCONFIRMMKDIR = &H200 // 建新目录时不需要用户确定
Const FOF_NOERRORUI = &H400 // 不显示出错用户界面
Const FOF_NOCOPYSECURITYATTRIBS = &H800 // 不复制 NT 文件的安全属性
返回值:
函数成功返回 0 ,失败返回非 0 。
详细说明:
函数中参数类型为一个LPSHFILEOPSTRUCT结构,它包含有进行文件操作的各种信息,在这个结构中,hWnd是指向发送消息的窗口句柄,pFrom与pTo是进行文件操作的源文件名和目标文件名,它包含文件的路径,对应单个文件的路径字符串,或对于多个文件,必须以NULL作为字符串的结尾或文件路径名之间的间隔,否则在程序运行的时候会发生错误。另外,pFrom和pTo都支持通配符*和?。
wFunc 是结构中的一个非常重要的成员,它代表着函数将要进行的操作类型。
使用该函数进行文件拷贝、移动或删除时,如果需要的时间很长,则程序会自动在进行的过程中出现一个无模式的对话框(Windows操作系统提供的文件操作对话框),用来显示执行的进度和执行的时间,以及正在拷贝、移动或删除的文件名,此时结构中的成员lpszProgressTitle显示此对话框的标题。fFlags是在进行文件操作时的过程和状态控制标识。