VBGood网站全文搜索 Google

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

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 10843|回复: 14

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

[复制链接]
 楼主| 发表于 2008-11-18 11:46:51 | 显示全部楼层 |阅读模式

  1. '**************************************************************************
  2. '**模 块 名:工程1 - Form1
  3. '**说    明:魔灵圣域 版权所有2008 - 2009(C) by icecept(魔灵)
  4. '**创 建 人:icecept(郭卫)
  5. '**日    期:2008-11-18 01:10:06
  6. '**修 改 人:icecept(郭卫)
  7. '**日    期:
  8. '**描    述:icecept(魔灵)制作
  9. '**版    本:V1.0.0    http://icecept.blog.sohu.com
  10. '*************************************************************************
  11. Option Explicit
  12. '用API一次删除、移动、复制、改名含有文件及子目录的文件夹
  13. Private Const FO_MOVE = &H1                '移动
  14. Private Const FO_COPY = &H2                '复制
  15. Private Const FO_DELETE = &H3              '删除
  16. Private Const FO_RENAME = &H4              '改名
  17. Private Const FOF_NOCONFIRMATION = &H10    '没有提示
  18. Private Const FOF_SILENT = &H4
  19. Private Const FOF_NOERRORUI = &H400
  20. Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
  21. Private Type SHFILEOPSTRUCT
  22.     hwnd  As Long         '句柄
  23.     wFunc  As Long        '操作命令
  24.     pFrom  As String      '源文件夹
  25.     pTo  As String        '目标文件夹
  26.     fFlags  As Integer    '
  27.     fAnyOperationsAborted  As Long     '不详
  28.     hNameMappings  As Long             '不详
  29.     lpszProgressTitle  As String   '   当取 FOF_SIMPLEPROGRESS 时,此参数才被使用
  30. End Type
  31. Private Function PathOperate(ByVal FormPath As String, ByVal ToPath As String, ByVal sOrder As String) As Boolean
  32.     On Error Resume Next
  33.     Dim udtPath   As SHFILEOPSTRUCT
  34.     udtPath.hwnd = 0
  35.     udtPath.wFunc = sOrder
  36.     udtPath.pFrom = FormPath
  37.     udtPath.pTo = ToPath
  38.     udtPath.fFlags = FOF_NOCONFIRMATION Or FOF_SILENT Or FOF_NOERRORUI
  39.     PathOperate = Not CBool(SHFileOperation(udtPath))
  40. End Function
  41. Private Sub Command1_Click()
  42.     '一次移动含有文件的目录或文件夹
  43.     '把c盘文件夹a及其其中的文件夹及目录移动到d盘的文件夹e中
  44.     PathOperate "c:\a", "d:\e", FO_MOVE
  45. End Sub
  46. Private Sub Command2_Click()
  47.     '一次移动含有文件的目录或文件夹
  48.     '把c盘文件夹a及其中的文件夹及目录复制到d盘的文件夹e中
  49.     PathOperate "c:\a", "d:\e", FO_COPY
  50. End Sub
  51. Private Sub Command3_Click()
  52.     '一次删除含有文件的目录或文件夹
  53.     '把c盘文件夹a中的文件夹及目录移动到d盘的文件夹e中
  54.     PathOperate "c:\a", vbNullString, FO_DELETE
  55. End Sub
  56. Private Sub Command4_Click()
  57.     '对含有子文件夹的目录改名
  58.     '把c盘文件夹a及其其中的文件夹及目录到d盘的文件夹e中
  59.     PathOperate "c:\a", "c:\e", FO_RENAME
  60. End Sub
复制代码

[ 本帖最后由 icecept 于 2009-2-19 00:54 编辑 ]

一次删除、复制、移动文件夹.rar

6.12 KB, 下载次数: 790

评分

参与人数 2威望 +3 人气 +1 收起 理由
红色狂想 + 1 + 1 发布源码
szdan + 2 不错,学习了!

查看全部评分

 楼主| 发表于 2008-11-18 11:49:03 | 显示全部楼层

谁能解释一下以下五句的中文意思

FOF_SILENT
FOF_NOERRORUI  
fAnyOperationsAborted  As Long  
hNameMappings  As Long  
lpszProgressTitle  As String

[ 本帖最后由 icecept 于 2008-11-19 10:11 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-1-21 06:33:27 | 显示全部楼层
移动文件的时候 如果已经有了~就会出现确认。要如何关闭确认。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-24 09:29:05 | 显示全部楼层

回复 #3 mosquito20 的帖子

没有出现此问题啊
回复 支持 反对

使用道具 举报

发表于 2009-1-31 15:33:52 | 显示全部楼层
需要呢!
谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-12 00:01:21 | 显示全部楼层

只复制111文件下的文件及文件夹到222文件夹,111本身不复制

Private Sub Command1_Click()
    If Dir("D:\222\", vbDirectory) = vbNullString Then
        MsgBox "D:\222  不存在", vbOKOnly Or vbInformation
    Else
        Sleep 5
        '一次复制含有文件的目录或文件夹
        PathOperate "D:\111\*.*", "D:\222\", FO_COPY
        MsgBox "复制成功", vbInformation Or vbOKOnly
    End If
End Sub
回复 支持 反对

使用道具 举报

发表于 2010-8-1 10:33:08 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 2010-8-7 00:51:09 | 显示全部楼层
很简单 很少 真的很好ㄟ 感谢
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2010-8-13 21:23:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

发表于 2010-9-24 23:33:11 | 显示全部楼层
谢谢楼主,我正需要
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-8-19 21:58

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