jiataifeng 发表于 2008-5-12 13:21:36

脚本的【暂停&继续】 功能如何实现

如果不添加托盘菜单,默认是有这个功能的。现在想以
GUI按钮或
托盘菜单或
热键
的形式实现脚本的【暂停&继续】功能。请问如何实现呢



后附:结果不是我要的结果

[ 本帖最后由 jiataifeng 于 2008-5-19 00:34 编辑 ]

jiataifeng 发表于 2008-5-13 09:13:56

下去了,再问。
请高手指点。

zhrh88 发表于 2008-5-13 11:08:43

好象帮助里面就有,定义全局变量,再来个 变量=NOT 变量

在下 发表于 2008-5-14 09:06:21

请查看帮助文档里面的:HotKeySet 函数

例子:
; 按下 Esc 将终止脚本,按下 Pause/Break 则将“暂停”

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage");Shift-Alt-d

;;;; 这里是程序主体 ;;;;
While 1
    Sleep(100)
WEnd
;;;;;;;;

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
      sleep(100)
      ToolTip('脚本已被“暂停”',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096,"","这是一个对话框。")
EndFunc

jiataifeng 发表于 2008-5-14 10:42:14

难道就是这样?

此时的暂停和没暂停好像区别不大吧?(在暂停过程中仍然可以处理事件)

这种意义的“暂停”有“恢复”的意义吗

直说了吧。默认的暂停怎么做到的呢。那个就很好啊

xiaoy 发表于 2008-5-14 11:17:14

自定义~~~~

jiataifeng 发表于 2008-5-16 19:36:52

问题依然没有解决。
你那个自定函数如果是个死循环,那么如何在死循环过程中暂停&继续呢?

jiataifeng 发表于 2008-5-16 20:40:03

呵呵,高人,能否实现一下呢。
毕竟对于脚本技术来说,暂停与恢复是不可避免的话题啊。

asdf 发表于 2008-5-16 20:55:37

Sleep是很好实现的方法。
冻结线程的话不难,问题是,你怎么恢复?线程已经冻结了啊!这就要搞多线程/多进程了,麻烦死了,不如直接sleep算了。

jiataifeng 发表于 2008-5-16 21:19:54

sleep也可以啊,在sleep过程中能不能些其他的事情呢?比如判断是否应该被唤醒。
单纯sleep特定的几秒钟意义不是很大。而且程序代码不可移植。

pcbar 发表于 2008-5-16 21:28:28

难道5楼的代码不能解决你的问题吗!?请仔细研究一下.
解决以后别忘了改标题;给提供帮助的朋友评分

jiataifeng 发表于 2008-5-16 21:38:08

难道5楼的代码不是真正的暂停

在暂停的时候 按Shift-Alt-d照应有反应哪。
呵呵,不过还是谢谢了!

asdf 发表于 2008-5-16 21:45:32

13楼说得很对,能解决问题就好了。再次强调,Sleep(DelayExecution)是比较好实现的,而系统栏暂停使用的是等待用户请求(WrUserRequest)+Sleep……那不如直接Sleep!

pcbar 发表于 2008-5-16 21:56:46

原帖由 jiataifeng 于 2008-5-16 21:38 发表 http://www.autoitx.com/images/common/back.gif
难道5楼的代码不是真正的暂停

在暂停的时候 按Shift-Alt-d照应有反应哪。
呵呵,不过还是谢谢了!
除了hotkey事件,别的都不会响应的,话说回来,如果绝对的暂停了,你又如何"继续"呢?

asdf 发表于 2008-5-16 22:00:08

火星地说一句……打开Process Explorer,恢复Autoit的线程……很正确吧……别拿石头咂我:face (35):
页: [1] 2
查看完整版本: 脚本的【暂停&继续】 功能如何实现