AHK:如何与GUI结合使用热键


3

我的GUI工作正常。

这是我的编辑框GUI的屏幕截图:

在此处输入图片说明

F1触发脚本。
然后输入1、2、3或4,然后单击Submit或点击ENTEREnter尚未被接受,但将其发送到隐藏模式或AHK世界中发生的我不知道的事情。-由davidmneedham修复-谢谢!

代码:无法完全正常工作

#NoEnv
#SingleInstance Force

F1::

    aa := "1) opt 1 or (f)"
    bb := "2) opt 2 (v)"
    cc := "3) open opt 3"
    dd := "4) open opt 4"

    Gui, Add,   Text, x50  y50  w100 h30, %aa%
    Gui, Add,   Text, x50  y70  w100 h30, %bb%
    Gui, Add,   Text, x50  y90  w300 h30, %cc%
    Gui, Add,   Text, x50  y110 w300 h30, %dd%

    Gui, Add,   Text, x50  y140 w50  h20, Selection:
    Gui, Add,   Edit, x100 y140 w100 h20 vChoice
    Gui, Add,   Text, x205 y140 w300 h30, (press ENTER)


    ;Gui, Add, Button, x50  y170 w50 h30  default gCancel, Cancel 
    ;Gui, Add, Button, x130 y170 w50 h30  gSubmit, Submit

    ;Enter command fix by davidmneedham on StackExchangs thanks!        
    Gui, Add, Button, x50  y170 w50 h30  gCancel, Cancel 
    Gui, Add, Button, x130 y170 w50 h30  default gSubmit, Submit

    Gui, Color, EEAA99
    Gui +LastFound  ; Make the GUI window the last found window for use by the line below.
    WinSet, TransColor, ff00ff
    Gui, Show, w350 h250, Enter Selection

;I even tried a while loop, here but it caused other problems
;while(true) 
;{ 
;  If (GetKeyState("f"))
;  { 
;     msgbox, f pressed
;     break 
;  } 
;}

return


Submit: 
    Gui, Submit

    if (Choice = "2")
    {
        msgbox chose 2
    }
    else if (Choice = "3")
    {
        msgbox chose 3
    }
    else if (Choice = "4")
    {
        msgbox chose 4
    }
    else
    {   
        msgbox chose 1
    }

    ButtonCancel:
        Gui, destroy
    return

;One suggestion I tried this

#If WinActive("Download ahk_exe AutoHotkey.exe")
    f:: Send 2{Tab 2}{Enter}
    v:: Send 3{Tab 2}{Enter}
#If

我要包含的内容是:
F1,ENTER 1,2,3,4
或直接
按下f以触​​发“ 2,ENTER”
按下v以激发“ 3,ENTER”


我从(LINK CODE HERE_HOTKEYS)并查看此内容(LINK CODE HERE_KEYPRESS)

调查代码:

#SingleInstance force

Input, Key, L1

MsgBox You pressed %Key%!

OnExit ExitSub
return

ExitSub:
ExitApp

我似乎不知道如何将其合并到 F1激发脚本和接受GUI原始代码中,或者接受fv,其中任何一行都将结束脚本,直到F1被按下才会再次运行。

概括:

F1触发脚本 
 2Enter 
要么 
3Enter 
要么 
4Enter 
要么 
f 
要么 
v 
...结束脚本,直到再次按F1。

Answers:


2

按下时窗口关闭而没有任何操作的原因Enter是,“取消”按钮被列为默认操作。

更改这些行:

Gui, Add, Button, x50  y170 w50 h30  default gCancel, Cancel 
Gui, Add, Button, x130 y170 w50 h30  gSubmit, Submit

并将“提交”按钮设为默认操作:

Gui, Add, Button, x50  y170 w50 h30  gCancel, Cancel 
Gui, Add, Button, x130 y170 w50 h30  default gSubmit, Submit

您的上下文相关热键不起作用的原因是因为您使用了错误的WinTitle:窗口标题为“ Enter Selection”。请改用以下几行

#If WinActive("Enter Selection")
  f:: Send 1{Tab 2}{Enter}
  v:: Send 2{Tab 2}{Enter}
#If

完整的功能脚本如下:

#NoEnv
#SingleInstance force

F1::

    aa := "1) opt 1 or (f)"
    bb := "2) opt 2 (v)"
    cc := "3) open opt 3"
    dd := "4) open opt 4"

    Gui, Add,   Text, x50  y50  w100 h30, %aa%
    Gui, Add,   Text, x50  y70  w100 h30, %bb%
    Gui, Add,   Text, x50  y90  w300 h30, %cc%
    Gui, Add,   Text, x50  y110 w300 h30, %dd%

    Gui, Add,   Text, x50  y140 w50  h20, Selection:
    Gui, Add,   Edit, x100 y140 w100 h20 vChoice
    Gui, Add,   Text, x205 y140 w300 h30, (press ENTER)

    Gui, Add, Button, x50  y170 w50 h30  gCancel, Cancel
    Gui, Add, Button, x130 y170 w50 h30  default gSubmit, Submit

    Gui, Color, EEAA99
    WinSet, TransColor, ff00ff
    Gui, Show, w350 h250, Enter Selection

return

#If WinActive("Enter Selection")
    f:: Send 1{Tab 2}{Enter}
    v:: Send 2{Tab 2}{Enter}
#If

Submit: 
    Gui, Submit

    if (Choice = "2")
    {
        msgbox chose 2
    }
    else if (Choice = "3")
    {
        msgbox chose 3
    }
    else if (Choice = "4")
    {
        msgbox chose 4
    }
    else
    {   
        msgbox chose 1
    }

    Gui, Destroy
return

Cancel:
    Gui, Destroy
return

啊哈,很高兴知道。AHK适用于程序员...但也可以剪切/粘贴代码LOL。但是,最主要的问题是触发[f]和[v],但是在f1的功能+ GUI销毁后,不用新的热键就可以触发。因此,最多分享一份。不是每个人都回答,而是一个很好的评论。
ejbytes

部分回答,谢谢。抵免额,我的mod'问题中包含您更新信息的抵免额。
ejbytes

我更新了答案,以解决您问题的第二部分。
davidmneedham

我尝试遵循逻辑和语法,因为我不太了解。我从用户那里得到了这个建议。我以为是AHK是否处于活动状态,并且“是”实际语法。因此,这是一种语法。“选择”还是“输入选择”?给定代码的确切位置或行数?您介意做一个剪切/粘贴矿井+您的吗?谢谢!
ejbytes

啊,“输入选择”是我窗口的标题吗?LOL
ejbytes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.