|
经过管理员等的大力支持和帮助,最终完善代码如下(为了测试方便,时间改为20秒):
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$kao = MsgBox(1, "后台复制前台提示测试", "确定后台复制?")
Select
Case $kao = 1
DirCopy("D:\001", "C:\002" ,1)
$Form1 = GUICreate("程序", 370, 40, -1,-1, $WS_POPUP)
$Label = GUICtrlCreateLabel("", 10, 15, 350, 17)
GUISetState(@SW_SHOW)
Dim $i = 1
While 1
$i = $i + 1
GUICtrlSetData($Label, "系统正在后台复制文件,大约需要20秒时间,还剩 " & 20 - $i & " 秒")
Sleep(1000)
If $i = 20 Then ExitLoop
WEnd
GUISetState(@SW_HIDE)
MsgBox(0, "恭喜", "后台复制文件完成")
Case $kao = 2
MsgBox(0, "后台复制前台提示测", "你取消了后台复制文件")
EndSelect
现在的问题是:
如果后台运行DirCopy("D:\001", "C:\002" ,1),瞬间完成的话,那么
提示“窗口”GUICtrlSetData($Label, "系统正在后台复制文件,大约需要20秒时间,还剩 " & 20 - $i & " 秒") 正常出现没有问题。
但是,
如果后台运行DirCopy("D:\001", "C:\002" ,1),需要一定时间,比如20秒的话,那么
提示“窗口”GUICtrlSetData($Label, "系统正在后台复制文件,大约需要20秒时间,还剩 " & 20 - $i & " 秒") 就只能在20秒后才出现,
即DirCopy("D:\001", "C:\002" ,1)运行完毕后,才出现提示,时间最后翻倍了!
测试方法:
建立D:\001,包含一定复制文件,大约20秒才能复制完成;
建立C:\002;
运行代码!
还需要进一步调试! |
|