你好,欢迎访问远方教程PC版!
广告位招租
网站首页 >> 统计之窗 >> VB专区 >> 文章内容

VB应用举例04:VB与Windows资源管理器互拷文件

[日期:2014-12-11]   来源:远方教程  作者:VBFans   阅读:2037次[字体: ] 访问[旧版]
 捐赠远方教程 

----通过VB编程来拷贝或移动文件的原理可能大家都十分清楚,可以利用Windows API SHFileOperation来进行操作,也可以利用VB内置的函数来操作。但是利用这些方法编 写的程序只能在程序内部执行文件的操作。这里我要向大家介绍如何通过VB编程将程序 中的文件操作同Windows的资源管理器中的拷贝、剪切操作连接起来。

----在Windows的资源管理器中,选中一个或多个文件,在文件上单击鼠标右键,在弹 出菜单中选复制。再切换到另外的目录,单击鼠标右键,点粘贴。就执行了一次文件的 拷贝操作,那么Windows在拷贝过程中执行了什么操作,是否将整个文件拷贝到剪贴版 上了呢?当然没有。实际上,windows只是将一个文件结构拷贝到了剪贴版,这个结构 如下:

----tDropFile+文件1文件名+vbNullChar文件2文件名+vbNullChar...+文件N文件名+vbNullChar 其中tDropFile是一个DROPFILES结构,这个结构在Windows API中有定义。在粘贴文件 时,利用API函数 DragQueryFile 就可以获得拷贝到剪贴版的文件全路径名,然后就 可以根据获得的文件名执行文件拷贝函数,实现对文件的粘贴操作。

----下面通过具体的程序来介绍:

----1、在工程文件中加入一个Module,然后在Module中加入如下代码:

----2、在Form1中加入一个FileListBox,Name属性设置为File1。加入一个DirListBox,

----Name属性设置为Dir1,在Dir1的Change事件中加入如下代码:

Private Sub Dir1_Change() 
   File1.Path = Dir1.Path 
End Sub 
----  
    加入一个DriveListBox,Name属性设置为Drive1,在Drive1的Change事件中加入如下代码: 
Private Sub Drive1_Change() 
   Dir1.Path = Drive1.Drive 
End Sub 
----  
    加入一个CommandButton,Name属性设置为cmdCopy,在cmdCopy的Click事件中加入如下代码: 
Private Sub cmdCopy_Click() 
   Dim Files() As String 
   Dim Path As String 
   Dim i As Long, n As Long 
    
   Path = Dir1.Path 
   If Right(Path, 1) < > "\" Then 
      Path = Path & "\" 
   End If 
    
   ’根据在List1上的选择建立拷贝文件的列表 
   With File1 
      For i = 0 To .ListCount - 1 
         If .Selected(i) Then 
            ReDim Preserve Files(0 To n) As String 
            Files(n) = Path & .List(i) 
            n = n + 1 
         End If 
      Next i 
   End With 
    
   ’拷贝文件到Clipboard 
   If clipCopyFiles(Files) Then 
      MsgBox "拷贝文件成功.", , "Success" 
   Else 
      MsgBox "无法拷贝文件...", , "Failure" 
   End If 
End Sub 
----  
    加入一个CommandButton,Name属性设置为cmdPaste,在cmdPaste的Click事件中加入如下代码: 
Private Sub cmdPaste_Click() 
   Dim Files() As String 
   Dim nRet As Long 
   Dim i As Long 
   Dim msg As String 
    
   nRet = clipPasteFiles(Files) 
   If nRet Then 
      For i = 0 To nRet - 1 
         msg = msg & Files(i) & vbCrLf 
      Next i 
      MsgBox msg, , "共粘贴" & nRet & "个文件" 
   Else 
      MsgBox "从剪贴版粘贴文件错误", , "Failure" 
   End If 
End Sub

--- 运行文件,在Windows 资源管理器中,选择文件,再在资源管理器菜单中选 编辑 | 复制然后在Form1中点击cmdPaste,从资源管理器中复制的文件就拷贝到Dir1所在的目录中。从 File1中选择文件,按cmdCopy复制,再在资源管理器中选 编辑 | 粘贴 ,选择的文件就被 拷贝到Windows 资源管理器的当前目录下。

图片展示
 
 
相关评论
站长推荐