Http://www.cnng.net  首页 原创软件   VB文挡  VB资源   乱舞人生  资源   Tags  给我留言 
用户登陆
用户:
密码:
 

站点日历
73 2022 - 5 48
1234567
891011121314
15161718192021
22232425262728
293031


站点统计

最新日志
获取windows特殊目录的函数(模块) 获得鼠标滚轮的事件
晴天 删除目录(文件夹),非LOOP   [ 日期:2007-12-08 ]
'**我们在使用vb要删除文件夹时,msdn说的是用  RmDir 语句删除已存在的目录或文件夹
'**但是 使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。
'**所以在 试图删除目录或文件夹之前,先使用 Kill 语句来删除所有文件。
'**这样,如果目录中还存在目录,多个子目录存在 ,会非常麻烦费事
'**所以,网上就有了 用 DO....LOOP 的解决方案.但是效率不是很高.

'**那么还有没有其他办法呢??

'**方法一: 我们可以用VB结合 MS-DOS的 "RD [/S] [/Q] [drive:]path" 处理文件夹
'**但很难得到返回结果.(至少我的方法麻烦)

'**方法二:
'**这个用了API SHFileOperation函数.
'**他不光有删除文件夹的功力,还有 移动,复制,重命名 等高招.

以下代码在模块
程序代码:[ 复制代码 ] 
'***********************************************************
'**我们在使用vb要删除文件夹时,msdn说的是用  RmDir 语句删除已存在的目录或文件夹
'**但是 使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。
'**所以在 试图删除目录或文件夹之前,先使用 Kill 语句来删除所有文件。
'**这样,如果目录中还存在目录,多个子目录存在 ,会非常麻烦费事
'**所以,网上就有了 用 DO....LOOP 的解决方案.但是效率不是很高.

'**那么还有没有其他办法呢??

'**方法一: 我们可以用VB结合 MS-DOS的 "RD [/S] [/Q] [drive:]path" 处理文件夹
'**但很难得到返回结果.(至少我的方法麻烦)

'**方法二:
'**这个用了API SHFileOperation函数.
'**他不光有删除文件夹的功力,还有 移动,复制,重命名 等高招.
'***********************************************************
'**模 块 名         DeleteFolders
'**作    用         不光有删除文件夹的功力,还有 移动,复制,重命名 等高招.
'**作    者         石陆
'**制作日期         2007 / 12 / 6
'**修    改
'**修改日期
'**石陆软件屋       http://www.cnng.net
'***********************************************************
Option Explicit

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              '不显示进度对话框
    FOF_RENAMEONCOLLISION = &H8  'Rename if destination already exists
    FOF_NOCONFIRMATION = &H10    '不提醒用户
    FOF_WANTMAPPINGHANDLE = &H20  'Fill in hNameMappings member
    FOF_ALLOWUNDO = &H40          '如果可能在撤销之前保存信息
    FOF_FILESONLY = &H80          'On *.*, 不复制文件夹
    FOF_SIMPLEPROGRESS = &H100    '任何文件都不显示名字
    FOF_NOCONFIRMMKDIR = &H200    '创建文件不要求确认
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 Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private op As SHFILEOPSTRUCT

Public Sub DeleteFolder(sDeleteFolder As String, Optional Interface As Boolean = False)

    SetAttr sDeleteFolder, vbNormal
    With op
        .wFunc = FO_DELETE
        .pFrom = sDeleteFolder
        .fFlags = IIf(Interface = False, FOF_NOCONFIRMATION, FOF_NOCONFIRMATION And FOF_SILENT)
    End With
    SHFileOperation op

End Sub



相关链接:vb | 删除 | 目录 | 文件夹

[阅读字体大小: ]
[本日志由 admin 于 2013-11-01 10:57 PM 编辑]
引用通告地址 (0):
复制引用地址http://www.cnng.net/blog/trackback.asp?tbID=54
复制引用地址http://www.cnng.net/blog/trackback.asp?tbID=54&CP=GBK
暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户名:  密码:   注册? 验证码: 
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情