喜马拉雅河 发表于 2009-1-6 00:27:37

怎么利用系统托盘的“暂停”菜单实现暂停功能?

我编了一个程序托盘的“暂停”和“退出”菜单,退出菜单的退出好用,但是“暂停”菜单的暂停功能进入无限循环,不能停止暂停,一直while...wend下去了。烦请高手指点一下问题出在哪?
代码如下:
HotKeySet("{F11}", "ex") ;退出热键为F11
Opt("TrayIconDebug", 1)
Opt("GUICoordMode", 1)
Opt("GUIOnEventMode", 1)
Opt("MouseCoordMode", 1)
Opt('traymenumode', 1)
Opt('trayoneventmode',2)
#Include <Constants.au3>

$tz3 = TrayCreateItem('暂停')
TrayCreateItem('')
$tz1 = TrayCreateItem('退出')
TraySetState()
TrayItemSetOnEvent($tz1, 'ex')
trayitemsetonevent($tz3,'zt')

while 1
        sleep(1000)
msgbox(0,'','主程序')
WEnd

Func zt()
        $fc1=TrayItemgetState($tz3)
        If $fc1=68 Then        TrayItemSetstate($tz3,65)
                while 1
                        sleep(500)
                        $fc1=trayitemgetstate($tz3)
                        if $fc1=68 then ExitLoop
                WEnd
EndFunc

func ex()
        Exit
EndFunc

[ 本帖最后由 喜马拉雅河 于 2009-1-6 15:38 编辑 ]

喜马拉雅河 发表于 2009-1-6 00:32:32

怎么我的代码跟别人的显示不一样?别人的贴子里代码是有颜色的,我的没有?

上面的代码在调试时显示,总是处于下面这个循环中.   
while 1
                        sleep(500)
                        $fc1=trayitemgetstate($tz3)
                        if $fc1=68 then ExitLoop
WEnd

应当我再次单击“循环”菜单去掉“钩”时,退出调用的ZT()函数而回到主程序啊,但实际上却没回到主程序,怎么回事哪?

喜马拉雅河 发表于 2009-1-6 10:18:43

自已顶一下吧

顽固不化 发表于 2009-1-6 10:22:36

代码不是完整的?

喜马拉雅河 发表于 2009-1-6 10:42:14

原帖由 顽固不化 于 2009-1-6 10:22 发表 http://www.autoitx.com/images/common/back.gif
代码不是完整的?
抱谦,我已经改了,这回完整了。

喜马拉雅河 发表于 2009-1-6 11:26:01

自己再顶一下,怎么这个暂停的功能就实现不了吗?

liongodmien 发表于 2009-1-6 13:10:18


HotKeySet("{F11}", "ex") ;退出热键为F11
Opt('traymenumode', 1)
Opt('trayoneventmode',1)
$pause = 0
$tz3 = TrayCreateItem('暂停')
TrayCreateItem('')
$tz1 = TrayCreateItem('退出')
TraySetState()
TrayItemSetOnEvent($tz1, 'ex')
trayitemsetonevent($tz3,'zt')
AdlibEnable('pause', 100)

while 1
        sleep(1000)
        msgbox(0,'','主程序', 1)
WEnd

Func zt()
        $pause = Not $pause
        If $pause Then
                TrayItemSetstate($tz3,65)
        Else
                TrayItemSetstate($tz3,68)
        EndIf
EndFunc

func ex()
        Exit
EndFunc

Func pause()
        While $pause
                Sleep(100)
        WEnd
EndFunc

喜马拉雅河 发表于 2009-1-6 14:35:29

非常感谢狮子了。

看了你的帮助,我感觉我的那段代码可能是错在ZT()函数里不应该放循环时间的命令

pingfan5888 发表于 2010-3-4 21:14:42

学习了。。。。。。。。。。。。
页: [1]
查看完整版本: 怎么利用系统托盘的“暂停”菜单实现暂停功能?