enet98 发表于 2009-3-22 09:53:47

后台复制前台提示代码!

经过管理员等的大力支持和帮助,最终完善代码如下(为了测试方便,时间改为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;
运行代码!

还需要进一步调试!

论坛管理员 发表于 2009-3-22 11:57:58

直接用 RunWait 运行 ,去掉20秒延时,完成后马上跳出对话框。
(见帮助)

lynfr8 发表于 2009-7-22 10:41:56

http://www.autoitx.com/forum.php?mod=viewthread&tid=5904&extra=page%3D6

afan 发表于 2009-7-22 12:23:54

LZ的代码与结果其实是一致的,你本来就是在复制完才额外多余显示需要20秒……
页: [1]
查看完整版本: 后台复制前台提示代码!