[已解决]如果用一个热键开始/停止相同的函数。
本帖最后由 waynew 于 2010-3-6 17:56 编辑#Include <HotKey.au3>
Global Const $VK_ESCAPE = 0x1B
Global Const $VK_F12 = 0x7B
Global $testFlg
_HotKeyAssign($VK_F12, 'test', $HK_FLAG_DEFAULT)
; Assign "CTRL-ESC" with Quit()
_HotKeyAssign(BitOR($CK_CONTROL, $VK_ESCAPE), 'Quit')
While 1
Sleep(10)
WEnd
Func Quit()
Exit
EndFunc ;==>Quit
Func test()
$testFlg = Not $testFlg
If Not $testFlg Then Beep()
Local $io = 0
While $testFlg
Sleep(1000)
$io += 1
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $io = ' & $io & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
WEnd
EndFunc
hotkey.au3这个udf非常不错,可以给不同的程序指定相同的热键,但它有个问题就是没法中断循环。
上面这个例子,我希望按下ctrl-f12调用函数test,再次按下中断test,但是没法实现,毛病出在 哪里,谁能帮一下?
不要使用HotKeySet()函数,这个函数的毛病是热键是全局的,没法给单独的窗口或者软件指定热键。 F12 开始
F11 停止
Ctrl+Esc 退出
#Include <HotKey.au3>
Global Const $VK_ESCAPE = 0x1B
Global Const $VK_F12 = 0x7B
Global Const $VK_F11 = 0x7A
Global $testFlg
_HotKeyAssign($VK_F12, 'test', $HK_FLAG_DEFAULT)
_HotKeyAssign($VK_F11, 'test2', $HK_FLAG_DEFAULT)
; Assign "CTRL-ESC" with Quit()
_HotKeyAssign(BitOR($CK_CONTROL, $VK_ESCAPE), 'Quit')
While 1
Sleep(10)
WEnd
Func Quit()
Exit
EndFunc ;==>Quit
Func test()
GUICreate("",100,100,-1,-1,0x80000000)
GUICtrlCreateLabel("",0,0,100,100,0x0201)
GUICtrlSetFont(-1,30)
GUISetState()
Local $io=0
$testFlg = True
While $testFlg
Sleep(100)
$io += 1
GUICtrlSetData(-1,$io)
WEnd
GUIDelete()
EndFunc
Func test2()
$testFlg=False
EndFunc
我用的HotKeySet()德一个键又当暂停又当开始,你可以改下,原理一样。。。
一个键既当暂停又当开始,如下。
HotKeySet("`","hoho");快捷键【~】,数字1左边那个键
$ok = 0 ;脚本打开时不点击鼠标
While 1 ;死循环
Sleep(10);每次点击的间隔,毫秒
If $ok = 1 Then
MouseClick("left");点击左键
;MouseClick("left");点击右键
EndIf
WEnd
Func hoho();开关
$ok = Abs($ok - 1);按一下0,再按一下1,再按一下0…………
EndFunc While 1 ;死循环
Sleep(10);每次点击的间隔,毫秒
switch $ok
case1
MouseClick("left");点击左键
$ok=0
case 0
MouseClick("left");点击右键
$ok=1
endswitch
WEnd 非常感谢各位,楼上的几个例子很有启发,谢谢大家。 $var = not $var 这个源码会用到要好好学一下!
页:
[1]