iPAQ 发表于 2009-12-22 00:31:39

请问如何让程序一边运行一系列语句一边响应窗体上的按钮事件

本帖最后由 iPAQ 于 2009-12-24 00:54 编辑

例如 ,我要运行一系列语句,期间希望能够响应窗体上的按钮,按下按钮时可以在不中断正在执行的语句上,另外运行其他语句(这是不是双线程?),或者可以暂停当前正在运行的语句,执行按钮触发的语句,在执行完后,继续执行先前执行的语句。

以前用VFP时,通过在语句中各一段或几次循环中插入DoEvent,来在中途响应按键,实现类似功能。

请问用AutoIt该如何实现?

谢谢!

水木子 发表于 2009-12-22 10:32:36

本帖最后由 水木子 于 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:19:37

本帖最后由 maxkingmax 于 2009-12-23 08:21 编辑

使用 GUIONEVENTMODE

神奇传送门 http://www.autoitx.com/forum.php?mod=viewthread&tid=476&from=favorites

iPAQ 发表于 2009-12-23 12:10:01

非常感谢两位的解答!我学习学习。

iPAQ 发表于 2009-12-24 00:54:26

AdlibRegister()方法只是定时重复执行,不适合我的用途。

我用GUIONEVENTMODE方法实现了。问题解决了。

再次感谢两位!

huangke 发表于 2013-1-24 00:58:05

GUIONEVENT这个好啊。。。
页: [1]
查看完整版本: 请问如何让程序一边运行一系列语句一边响应窗体上的按钮事件