如何在执行脚本过程中点击按钮中止脚本执行?用消息模式和事件模式貌似都不行?
本帖最后由 thackit 于 2012-7-2 15:24 编辑想在执行脚本的同时,点击一个按钮来中止脚本执行。
我分别试验了消息模式和事件模式两种方案,但是当点击“开始听课”按钮脚本正在执行时,想通过点击“停止听课”按钮来中止脚本都没有反应。
代码如下:
消息模式:GUICreate($name, 220, 750)
$Button1 = GUICtrlCreateButton("开始听课", 25, 640, 100, 50)
$Button5 = GUICtrlCreateButton("停止听课", 135, 650, 65, 30)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button1
autolesson1()
Case $msg = $Button5
If MsgBox( 4097, "提示", "确定停止听课?") Then Exit
EndSelect
WEnd
事件模式:GUICreate($name, 220, 750)
$Button1 = GUICtrlCreateButton("开始听课", 25, 640, 100, 50)
$Button5 = GUICtrlCreateButton("停止听课", 135, 650, 65, 30)
GUISetState()
Opt("GUIOnEventMode", 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "gui")
GUICtrlSetOnEvent($Button1, "gui")
GUICtrlSetOnEvent($Button5, "killself")
While 1
;;;
WEnd
Exit
Func gui()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
autolesson1()
EndSwitch
EndFunc
Func killself()
If MsgBox( 4097, "提示", "确定停止听课?") Then Exit
EndFunc
本帖最后由 冷玉公子 于 2012-7-2 13:04 编辑
细的就不多说了,给你两个方法。
第一:在函数里加上 GUIGetCursorInfo 来检测,判断鼠标按下和控件ID.
第二:用多进程的方式,例如:#include <ChildProc.au3>
_ChildProc_Start("函数名")也就说用另外一个进程来执行这个东西,要停止的时候就是结束这个进程,或者发消息给这个进程。 是两个按钮都没反应吗?究竟是没反应还是出错啊?代码不全,且比较乱呢。GUICtrlSetOnEvent()怎么用在消息模式下呢? 回复 3# shqf
谢谢楼上两位回复。
是当点击“开始听课”按钮后,脚本开始执行还没结束,这时要点击“停止听课”按钮中止脚本执行,此时点击按钮没反应即不能停止听课。 回复 2# 冷玉公子
实在比较菜,请教稍微详细的方法?
第一种方法要怎么加入那个检测?
第二种方法,我找到ChildProc.au3,但是虽然启动了多进程,但是还是不能在点击按钮时执行。 请参考相关贴子,传送门
http://www.autoitx.com/forum.php?mod=viewthread&tid=19546 用au3自带的默认trayMenu来不就行了
HotKeySet("!{F2}","haha") 顶楼上的答案
页:
[1]