hostkeys好使,按钮不好使,请问我哪错了?
在未执行“开始”之前,按钮停止是好使的当执行开始之后,按钮停止没有反应
按热键F4可以结束。不知道为什么
#AutoIt3Wrapper_UseX64=n
#include <array.au3>
#Include <File.au3>
#include <GUIConstantsEx.au3>
HotKeySet("{f4}", "Terminate")
$Form2 = GUICreate("MarinaClick", 260, 430, 270, 150)
$Button1 = GUICtrlCreateButton("开始", 20,20, 225, 190)
$Button2 = GUICtrlCreateButton("停止", 20,220, 225, 190)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
start()
Case $Button2
Terminate()
EndSwitch
WEnd
Func start()
$flagaaaa=1
Do
MsgBox(0,0,0)
Until $flagaaaa=0
EndFunc
Func Terminate()
Exit
EndFunc
本帖最后由 shqf 于 2014-4-6 18:13 编辑
GUIGetMsg()靠不停循环来获取GUI消息,再作进一步处理。可start()后程序死在这个函数内30-33句的死循环内了,程序再也无法执行到16句、22句,你叫程序怎能获取到$Button2的消息并执行Terminate()呢! 回复 2# shqf
可是我里头就是一个死循环,while能好使不? 我现在是想要这样,我是要操控一个windows phone的虚拟机,激活虚拟器窗口的时候,会把windows的一些功能键禁用掉,一些键留给虚拟机使用,所以这个时候au3设置的hotkeys是失效的,所以我想把按钮做的大一点,然后可以鼠标挪动到按钮结束程序,但是现在结束不了,我只能鼠标点到程序窗口上,然后再按F4结束程序 不知道楼主到底想干什么?如果说是运行虚拟机和停止虚拟机,为什么一定要设置热键来结束呢? 回复 3# dearmb
去掉start()函数中的DO死循环。 回复 1# dearmb #include <GUIConstantsEx.au3>
Local $iCount = 0
$Form2 = GUICreate("MarinaClick", 260, 430, 270, 150)
$Button1 = GUICtrlCreateButton("开始", 20, 20, 225, 190)
$Button2 = GUICtrlCreateButton("停止", 20, 220, 225, 190)
Local $aAccelKeys = [["^b", $Button1],["^s", $Button2]]
GUISetAccelerators($aAccelKeys)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$iCount = 0
While 1
$iCount += 1
;ConsoleWrite('当前循环次数: ' & $iCount & @CRLF)
If GUIGetMsg() = $Button2 Then ExitLoop
WEnd
Case $Button2
ExitLoop
EndSwitch
WEnd
Terminate()
Func Terminate()
If $iCount Then MsgBox(0, '', '已经进行了' & $iCount & '次循环')
Exit
EndFunc ;==>Terminate缺点是: 欲终止循环时,无论是按热键还是点击停止按钮,一般都要连按(点击)两次才会有响应! 回复 5# xms77
是用脚本操纵虚拟机,我是要运行脚本和停止脚本,不是运行虚拟机和停止虚拟机…… 回复 8# dearmb
Au3脚本默认不是有运行和暂停的托盘菜单吗? 回复 9# xms77
右下角那个?
鼠标被控制来回乱点,怎么点托盘菜单? 顶一下赚钱。。。。。。。。。。。。。。。
页:
[1]