请问如何让程序一边运行一系列语句一边响应窗体上的按钮事件
本帖最后由 iPAQ 于 2009-12-24 00:54 编辑例如 ,我要运行一系列语句,期间希望能够响应窗体上的按钮,按下按钮时可以在不中断正在执行的语句上,另外运行其他语句(这是不是双线程?),或者可以暂停当前正在运行的语句,执行按钮触发的语句,在执行完后,继续执行先前执行的语句。
以前用VFP时,通过在语句中各一段或几次循环中插入DoEvent,来在中途响应按键,实现类似功能。
请问用AutoIt该如何实现?
谢谢! 本帖最后由 水木子 于 2009-12-22 10:39 编辑
找个以前写的列子来回答LZ的问题!
嘿嘿!是不是感觉和LZ说的情况有点像啊?
#include <GuiEdit.au3>
#include <WindowsConstants.au3>
#include <ScrollBarConstants.au3>
GUICreate("Form1", 320, 300)
$List1 = GUICtrlCreateEdit("", 10, 10, 300, 200)
$Button1 = GUICtrlCreateButton("向上翻滚", 20, 230, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("向下翻滚", 120, 230, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("暂停", 220, 230, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
For $i = 1 To 100
_GUICtrlEdit_AppendText($List1 ,$i&@LF)
Next
Send("^{HOME}")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
AdlibUnRegister( "xia" )
AdlibRegister('shang' ,100)
Case $Button2
AdlibUnRegister( "shang" )
AdlibRegister('xia' ,100)
Case $Button3
AdlibUnRegister( "shang" )
AdlibUnRegister( "xia" )
EndSwitch
WEnd
Func shang()
_GUICtrlEdit_Scroll($List1, $SB_LINEUP)
EndFunc
Func xia()
_GUICtrlEdit_Scroll($List1, $SB_LINEDOWN)
EndFunc 本帖最后由 maxkingmax 于 2009-12-23 08:21 编辑
使用 GUIONEVENTMODE
神奇传送门 http://www.autoitx.com/forum.php?mod=viewthread&tid=476&from=favorites 非常感谢两位的解答!我学习学习。 AdlibRegister()方法只是定时重复执行,不适合我的用途。
我用GUIONEVENTMODE方法实现了。问题解决了。
再次感谢两位! GUIONEVENT这个好啊。。。
页:
[1]