找回密码
 加入
搜索
查看: 4335|回复: 6

[AU3基础] [已解决]如果用一个热键开始/停止相同的函数。

  [复制链接]
发表于 2010-2-25 23:36:52 | 显示全部楼层 |阅读模式
本帖最后由 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()函数,这个函数的毛病是热键是全局的,没法给单独的窗口或者软件指定热键。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-2-26 10:36:51 | 显示全部楼层
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
发表于 2010-2-26 11:34:14 | 显示全部楼层
我用的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

评分

参与人数 1金钱 +40 收起 理由
gapkiller + 40 真聪明哦!!

查看全部评分

发表于 2010-2-26 15:02:35 | 显示全部楼层
While 1 ;死循环
        Sleep(10);每次点击的间隔,毫秒
        switch $ok
           case  1
                MouseClick("left");点击左键
                $ok=0
           case 0
                MouseClick("left");点击右键
               $ok=1
     endswitch   
WEnd
 楼主| 发表于 2010-2-27 07:38:59 | 显示全部楼层
非常感谢各位,楼上的几个例子很有启发,谢谢大家。
发表于 2010-2-27 08:46:20 | 显示全部楼层
$var = not $var
发表于 2017-1-2 13:49:40 | 显示全部楼层
这个源码会用到要好好学一下!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 16:53 , Processed in 0.075604 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表