cashiba 发表于 2016-9-22 22:16:54

设置热键后,按热键后没有反应的原因?[已解决]

本帖最后由 cashiba 于 2016-9-24 22:15 编辑

最近学习热键,练习代码如下。
发现有问题:按热键F12后,毫无反应,是咋回事?
其它热键都能正常反应。
Global $g_bPaused = False

HotKeySet("{PAUSE}", "HotKeyPressed")
HotKeySet("{ESC}", "HotKeyPressed")
HotKeySet("{F10}", "HotKeyPressed")
HotKeySet("{F12}", "HotKeyPressed")

While 1
    Sleep(100)
WEnd

Func HotKeyPressed()
    Switch @HotKeyPressed
      Case "{PAUSE}"
            $g_bPaused = Not $g_bPaused
            While $g_bPaused
                Sleep(100)
                ToolTip('Script is "Paused"', 0, 0)
            WEnd
            ToolTip("")

      Case "{ESC}"
             Exit
      Case "{F10}"
             runnote()
      Case "{F12}"
             endnote()
    EndSwitch
EndFunc   ;==>HotKeyPressed

Func runnote()
    Send("#r")
    WinWait("Run", "", 0)
    Send("notepad.exe {Enter}")
    Local $hWnd = WinWait("", "", 0)
    Send("现在的日期/时间: {F5}")
EndFunc

Func endnote()
local $hwnd=WinWaitActive("")
   Sleep(500)
   WinClose($hWnd)
   WinWaitActive("")
   Sleep(500)
   Send("{TAB}{ENTER}")
EndFunc

水木子 发表于 2016-9-22 22:20:03

你真的认真看了帮助文档吗?

cashiba 发表于 2016-9-22 22:26:45

你真的认真看了帮助文档吗?
水木子 发表于 2016-9-22 22:20 http://www.autoitx.com/images/common/back.gif
已经考虑到这个问题了,换其它的比喻F9也是一样没反应阿...

cashiba 发表于 2016-9-22 22:35:27

唉,好像发现问题在哪里了。。。。
改成下面这样可以运行了
Global $g_bPaused = False

HotKeySet("{PAUSE}", "HotKeyPressed")
HotKeySet("{ESC}", "HotKeyPressed")
HotKeySet("{F10}", "HotKeyPressed")
HotKeySet("{F9}", "HotKeyPressed")

While 1
    Sleep(100)
WEnd

Func HotKeyPressed()
    Switch @HotKeyPressed
      Case "{PAUSE}"
            $g_bPaused = Not $g_bPaused
            While $g_bPaused
                Sleep(100)
                ToolTip('Script is "Paused"', 0, 0)
            WEnd
            ToolTip("")

      Case "{ESC}"
             Exit
      Case "{F10}"
             runnote()
      Case "{F9}"
                       endnote()
    EndSwitch
EndFunc   ;==>HotKeyPressed

Func runnote()
        Send("#r")
    WinWait("运行", "",0)
    Send("notepad.exe {Enter}")
    Local $hWnd = WinWait("", "", 0)
    Send("现在的日期/时间: {F5}")
EndFunc

Func endnote()
local $hwnd=WinActivate("无标题 - 记事本")
   ConsoleWrite($hwnd & @CRLF)
   Sleep(500)
   WinClose($hWnd)
       WinWaitActive("")
   Sleep(500)
   Send("{TAB}{ENTER}")
EndFunc一个是水大说的F12保留,另一个是:WinWaitActive("TITLE:无标题 - 记事本;")好像不好用,改成WinActivate("无标题 - 记事本")就可以了。
难道这就是画蛇添足?{:face (396):}

水木子 发表于 2016-9-22 22:37:07

回复 3# cashiba

热键肯定是没问题的,你得检查下,是不是你其他地方出了问题。
HotKeySet('{F8}', 'HotKeyPressed')
HotKeySet('{F9}', 'HotKeyPressed')

While 1
    Sleep(250)
WEnd

Func HotKeyPressed()
    MsgBox(0, 0, @HotKeyPressed)
EndFunc   ;==>HotKeyPressed

cashiba 发表于 2016-9-22 22:42:34

本帖最后由 cashiba 于 2016-9-22 22:48 编辑

想在AU3中模拟按键的热键操控程序的功能,用以上代码大概部分能实现了.....
按键好像也设及VB+API等,为啥它的F12不需保留呢?

cashiba 发表于 2016-9-22 22:47:52

谢谢水大及时指点......
目前用热键F9 run来启动程序,F10 kill进程来中止程序,但是暂停/继续程序不知道是咋实现的。好像有点困难

cashiba 发表于 2016-9-22 22:51:33

本帖最后由 cashiba 于 2016-9-23 00:00 编辑

另外,虽然找到问题了,也不明白
WinWaitActive("")

WinActivate("无标题 - 记事本")
为啥产生的结果会不一样。
按理说WinWaitActive("")这个更具体....{:face (293):}

水木子 发表于 2016-9-22 22:53:11

像这样吗?
http://www.jx3pve.com/thread-6493-1-1.html

heroxianf 发表于 2016-9-22 23:08:36

回复 9# 水木子


    高级货啊水版   能提供学习的机会么{:face (197):}

水木子 发表于 2016-9-22 23:10:52

回复 8# cashiba
一个是暂停脚本直到窗口激活,一个是主动去激活窗口。
函数功能都不一样,结果为什么会一样?

水木子 发表于 2016-9-22 23:12:11

回复 10# heroxianf

没啥高级的,这是以前帮朋友写的游戏辅助工具而已,好久没有更新了。

heroxianf 发表于 2016-9-22 23:15:17

回复 12# 水木子

有没有地图探索功能~    总觉得能做出很牛的外挂工具

cashiba 发表于 2016-9-22 23:31:54

本帖最后由 cashiba 于 2016-9-23 00:00 编辑

回复cashiba
一个是暂停脚本直到窗口激活,一个是主动去激活窗口。
函数功能都不一样,结果为什么会一 ...
水木子 发表于 2016-9-22 23:10 http://www.autoitx.com/images/common/back.gif
哦,我好像应该写
WinWaitActive("")

WinWaitActive("无标题 - 记事本")
再问的.
自己都被绕晕了.....
既然WinWaitActive比不上WinActivate高效,为啥不给淘汰掉呢,让咱们这些新手晕菜哇{:face (460):}

cashiba 发表于 2016-9-22 23:35:38

水大的工具运行起来很流畅,看大家都说好,肯定是好东西{:face (332):}.琢磨一下咋用.....
页: [1] 2
查看完整版本: 设置热键后,按热键后没有反应的原因?[已解决]