admin 管理员组文章数量: 1184232
2024年3月12日发(作者:go语言学习app)
VB CopyFileEx 文件复制程序带滚动条
信息来源:黑客代码 编辑:admin 浏览次数:1050 加入时间:2010-4-16 16:38:56 评论(0)
VB CopyFileEx 文件复制程序带滚动条
跟微软自带的一样 ! 支持 复制的 熟读 ! 而且很快 比微软的快
看代码
以下是引用片段:
Option Explicit
'函数说明
'CopyFileEx 复制一个已存在的文件到一个新文件。该函数保留了文件的扩展属性.OLE存储
格式和文件属性。文件的安全属性不复制到新文件中去。
'参数说明
'lpExistingFileName:指向一个以NULL结尾的已存在的文件的文件名。
'lpNewFileName:指向一个以NULL结尾的新文件的文件名。
'lpProgressRoutine:指向一个类型为LPPROGRESS_ROUTINE的函数地址,文件的每一部分
复制以后该函数将被调用。该参数可设为NULL。
'pbCancel:指向一个BOOL型变量,如果在复制的过程中该变量变为TRUE,则该文件复制操
作将被取消。
'dwCopyFlags:指定文件复制的方式,该参数可以为下列值:
'COPY_FILE_FAIL_IF_EXISTS = &H1 '如果要复制的文件已存在,则函数将失败返回
'COPY_FILE_RESTARTABLE = &H2 '函数记录下文件的复制进度,如果复制在中途失败,
则可用同样的lpExistingFileName和lpNewFileName来重新开始先前失败的复制操作。
Public Declare Function CopyFileEx Lib "" Alias "CopyFileExA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As
Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
'在指定的时间间隔内挂起当前的进程
'dwMilliseconds 指定挂起执行进程的时间,以ms为单位。当该值为0时,该进程将余下的
时间片交给处于就绪状态的同一优先级的其它进程,如果没有这样的进程,则函数继续执行。
'如果把该参数设置为InFinite,则可无限延迟。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const COPY_FILE_FAIL_IF_EXISTS = &H1 '如果要复制的文件已存在,则函数将失
败返回
Public Const COPY_FILE_RESTARTABLE = &H2 '函数记录下文件的复制进度,如果复
制在中途失败,则可用同样的lpExistingFileName和lpNewFileName来重新开始先前失败的
复制操作。
Public Const PROGRESS_CANCEL = 1
Public Const PROGRESS_CONTINUE = 0
Private Const PROGRESS_QUIET = 3
Private Const PROGRESS_STOP = 2
Global gflagPause& '暂停拷贝标志位
Global gflagCancel& '取消标志位
'首先定义回调函数,这个函数的参数较多,
'dwCallbackReason说明了回调的原因,根据MSDN的说明,第一次回调的原因是
CALLBACK_STREAM_SWITCH, 而后的都是 CALLBACK_CHUNK_FINISHED。
'两个handle不用说了吧,最后那个lpData是调用CopyFileEx时传进去的。
'另外这个函数的返回值将影响拷贝的过程
'MSDN定义了四种返回值: PROGRESS_CONTINUE 让拷贝过程继续;
PROGRESS_CANCEL 终止拷贝过程并删除目标文件
'PROGRESS_STOP 停止拷贝,但以后可以继续开始; PROGRESS_QUIET 继续拷贝过
程,但从此不再进行回调。
'*************************************************************************
'**函 数 名: CopyProgressRoutine
'**输 入: ByVal TotalFileSize(Currency) -
'** :ByVal TotalBytesTransferred(Currency) -
'** :ByVal StreamSize(Currency) -
'** :ByVal StreamBytesTransferred(Currency) -
'** :ByVal dwStreamNumber(Long) -
'** :ByVal dwCallbackReason(Long) -
'** :ByVal hSourceFile(Long) -
'** :ByVal hDestinationFile(Long) -
'** :ByVal lpData(Long) -
'**输 出: (Long) -
'**功能描述: 监视复制进度及操作标志
'**全局变量:
'**调用模块:
'**作 者:
'**日 期: 2007-03-07 19:55:23
'**修 改 人:
'**日 期:
'**版 本: V1.0.0
'*************************************************************************
Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal
TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal
StreamBytesTransferred As Currency, ByVal dwStreamNumber As Long, ByVal
dwCallbackReason As Long, ByVal hSourceFile As Long, ByVal hDestinationFile As Long,
ByVal lpData As Long) As Long
Do While gflagPause& = 1 '如果收到暂停标志位,则执行死循环,直到收到继续拷贝
的标志位。
DoEvents
Sleep (500)
Loop
frm_ = Int((TotalBytesTransferred * 10000) / (TotalFileSize * 10000)
* 100) '进度显示
DoEvents
CopyProgressRoutine = 0 '让拷贝过程继续
End Function
版权声明:本文标题:VB CopyFileEx 文件复制程序带滚动条 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710187428a561494.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论