分享

vb API实现复制,转移,删除文件与文件夹

 歪SIR 2011-02-27
bas里写的:


Public Const FO_MOVE As Long = &H1
Public Const FO_COPY As Long = &H2
Public Const FO_DELETE As Long = &H3
Public Const FO_RENAME As Long = &H4
Public Const FOF_MULTIDESTFILES As Long = &H1
Public Const FOF_CONFIRMMOUSE As Long = &H2
Public Const FOF_SILENT As Long = &H4
Public Const FOF_RENAMEONCOLLISION As Long = &H8
Public Const FOF_NOCONFIRMATION As Long = &H10
Public Const FOF_WANTMAPPINGHANDLE As Long = &H20
Public Const FOF_CREATEPROGRESSDLG As Long = &H0
Public Const FOF_ALLOWUNDO As Long = &H40
Public Const FOF_FILESONLY As Long = &H80
Public Const FOF_SIMPLEPROGRESS As Long = &H100
Public Const FOF_NOCONFIRMMKDIR As Long = &H200

Type SHFILEOPSTRUCT
     hwnd As Long
     wFunc As Long
     pFrom As String
     pTo As String
     fFlags As Long
     fAnyOperationsAborted As Long
     hNameMappings As Long
     lpszProgressTitle As String
End Type

Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

command1_click()

Dim result As Long, fileop As SHFILEOPSTRUCT
With fileop
        
        .hwnd = Me.hwnd
        .wFunc = FO_COPY
       .pFrom = Text4.Text & "\*.*" & vbNullChar & vbNullChar
         .pTo = "d:\ak" & vbNullChar & vbNullChar
        .fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
result = SHFileOperation(fileop)
MsgBox "完成"
Unload Me
If result <> 0 Then
        ' Operation failed
        'MsgBox Err.LastDllError
        MsgBox "未完成"
        Unload Me
Else
        If fileop.fAnyOperationsAborted <> 0 Then
                      MsgBox "Operation Failed"
         End If
End If

完成--------

 

API功能详解:

使用API函数SHFileOperation,这个函数可以同时拷贝、删除、改名或移动多个文件,甚至整个目录。如果你愿意,还可以显示相应的动画对话框,功能十分强大。SHFileOperation的参数是一个SHFILEOPSSTRUCT结构。这个结构中各成员的含义如下:

     - hwnd - 显示文件操作对话框的窗口句柄

     - wFunc - 表示要进行的操作,可以取以下值:

     - FO_COPY - 拷贝文件。所要拷贝的文件由pFrom成员指定,目的地址有pTo成员指定。

     - FO_DELETE - 删除pFrom指定的文件。(pTo 被忽略。)

     - FO_MOVE - 移动文件。所要移动的文件由pFrom成员指定,目的地址有pTo成员指定。

     - FO_RENAME - 改名pFrom指定的文件。

     - pFrom - 指定文件名的缓冲区的地址。必须以Chr(0)结尾。如果包括多个文件以Chr(0)分割。

     - pTo - 指定目的文件名或目录的缓冲区的地址。必须以Chr(0)结尾。如果使用了FOF_MULTIDESTFILES标志,可以包括多个文件名,文件名之间以Chr(0)分割。

     - fFlags - 标志:

     - FOF_ALLOWUNDO - 允许恢复

     - FOF_FILESONLY - 如果使用了*.*,只操作文件。

     - FOF_MULTIDESTFILES - pTo成员可以为多个目的文件。

     - FOF_NOCONFIRMATION - 不显示确认对话框。

     - FOF_NOCONFIRMMKDIR - 不确认是否建立目录。

     - FOF_NOERRORUI - 如果有错误,不显示用户界面。

     - FOF_RENAMEONCOLLISION - 如果目的文件已经存在,给要处理的文件一个新名字。

     - FOF_SILENT - 不显示进度对话框。

     - FOF_SIMPLEPROGRESS - 显示进度框,但不显示文件名。

     - fAnyOperationsAborted -如果用户退出,该成员为TRUE,否则为FALSE。

     - lpszProgressTitle - 进度框的标题,只有选择了FOF_SIMPLEPROGRESS标志才有效。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多