找回密码
 加入
搜索
查看: 2080|回复: 6

进度条和任务如何同时运行

[复制链接]
发表于 2009-3-27 17:40:08 | 显示全部楼层 |阅读模式
有GUICtrlCreateProgress建立模仿进度条,不知能否实现当进度在运行的一开始就运行另一个子程序,直到子程序运行结束后使的进度条也正好走满格?请高手们来指点迷津!

[ 本帖最后由 hhasee 于 2009-3-28 10:59 编辑 ]
发表于 2009-3-27 18:07:16 | 显示全部楼层
用Adlib或Timer
发表于 2009-3-27 18:12:44 | 显示全部楼层
这样不好控制吧?子程序运行多长时间也不知道。
不如将进度条设置不停的移动不就行了。子程序运行完成就停止进度条。
发表于 2009-3-27 22:59:53 | 显示全部楼层
[au3]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $i,$j
    GUICreate("My GUI") ; will create a dialog box that when displayed is centered
        $progressbar1 = GUICtrlCreateProgress(10, 10, 300, 20)
    GUISetState(@SW_SHOW) ; will display an empty dialog box

AdlibEnable("myadlib",1);开启一个调试线程,没1MS刷新一下进度.
    ; Run the GUI until the dialog is closed
    While 1
        $msg = GUIGetMsg()
        
        If $msg = $GUI_EVENT_CLOSE Then
                        ExitLoop
                EndIf
                If $i<10000 Then
                        $i=$i+1 ;你可以在这里做点事,如果任务量太大,UI就会假死.
                        $j=$i/100 ;$j就是百分比了.从这个可以看出用AU3做GUI的效率和不足了.
                EndIf
        ;Sleep(1)               
    WEnd
    GUIDelete()

;...
Exit

Func myadlib()
GUICtrlSetData($progressbar1, $j);刷新进度,这里同样不能做大任务,没有返回程序不会向下执行的.
EndFunc

;看这个,应该知道,我为什么说AU3没有多线程了吧.[/au3]
 楼主| 发表于 2009-3-28 10:47:51 | 显示全部楼层
悲哀啊!
发表于 2010-6-12 15:53:39 | 显示全部楼层
顶一下,现在这个问题,我急切想知道答案!
发表于 2011-7-4 22:00:10 | 显示全部楼层
本帖最后由 yuanyannian 于 2011-7-4 22:01 编辑

回复 4# akmm88


    好像少了 #include <ProgressConstants.au3>
请检查。
  而且,进度条 也不能与 程序运行所同步。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 23:35 , Processed in 0.076288 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表