chengjinn 发表于 2009-4-9 10:39:43

新手..看例子有几处不明之处!请高手指点下

本帖最后由 chengjinn 于 2009-12-25 21:18 编辑

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage");Shift-Alt-d
;一处提问!!,   while 1 为无限循环.为什么脚本进入无限循环!还能检测按键!
;;;; 这里是程序主体 ;;;;
While 1
    Sleep(100)
WEnd
;;;;;;;;
;第二处提问?    为什么按下PUASE键后脚本暂停再次按下脚本又会激活,没有发现在哪里有激活脚本的语句!!!   
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

ahphsautoit 发表于 2009-4-9 11:10:05

关于第一个问题:
主循环里面可以有你需要执行的命令,也可以就是简单到只有一句sleep(100),一般来讲,主循环都是一个死循环。
看起来你提供的脚本里省略掉了一部分,还有一段检测窗口消息的命令。检测窗口消息的命令就是用来检测是否有需要执行的命令的,诸如本脚本中的自定义函数(键盘热键)。
关于第二个问题:
重点在于这两句:
$Paused = NOT $Paused
    While $Paused

第一句:提供了单按一个按钮完成1=是、2=非、3=是、4=非......的循环功能,第二句则检测执行是与非的命令。
总的来讲,这个脚本提供的内容不完全,但是这种写法可以实现这样的功能,就是检测键盘热键的点击动作,按一次停止主循环的运行,再按一次启动主循环的运行。

sensel 发表于 2009-4-9 14:52:25

HotKeySet,这是设置一个全局热键。也就是说,不管程序运行到哪一步,不管程序是在前台还是后台运行,只要按下指定键就立即转到相应函数运行,完成后再返回。
HotKeySet("{PAUSE}", "TogglePause") 这一行,指定按下PAUSE键后转到函数TogglePause。查看函数TogglePause可以看到,对$Paused变量执行了一个逻辑非操作,所以做到了双态切换。当$Paused为真时,程序进入一个暂停的死循环,直到$Paused为假时才返回。
页: [1]
查看完整版本: 新手..看例子有几处不明之处!请高手指点下