自动热键,如何创建下拉列表以选择项目


3

我有几个简短的热字符串/热键。如果键入“一个”,则有一个对应的动作;如果键入两个,则有另一个对应的动作。

我的问题是,如何为所有人制作一个热键,当我按下一个键时,将出现一个下拉列表/ msgbox,然后我可以选择一个项目,然后单击它,它将执行基于在下面的列表上?

::one::

{

    do this

    do that

}

return

::two::

{

    do this

    do that

}

return

::three::

{

    do this

    do that

}

return

::four::

{

    do this

    do that

}

return

::five::

{

    do this

    do that

}

return

另外,Autohotkey是学习脚本的好工具吗?还是AutoIT?或者我应该学习主要的脚本语言(例如我通常听到的语言-Perl,PhP等)

我们是那些编程语言能够执行简单的步骤,例如仅记录键盘按下和鼠标移动吗?

。谢谢,

王菲

Answers:


2

AHK,例如:

; create the gui:
Gui, +AlwaysOnTop
; DropDownList:
; Gui, Add, DDL, gAction vChoise Choose1 w200, one|two|three|four
; ListBox:
Gui, Add, ListBox, gAction vChoise w200 h60, one|two|three|four
return

; Press F1 to show the gui:
F1::
CoordMode, Mouse, Screen
MouseMove, 40, 50, 0
Gui, Show, x0 y0, Actions
return


Action:
Gui, Submit ; or
; Gui, Submit, NoHide   ; if you don't want to hide the gui-window after an action
If (Choise = "one")
    MsgBox, 1st action 
If (Choise = "two")
    MsgBox, 2nd action
If (Choise = "three")
    MsgBox, 3rd action
If (Choise = "four")
    MsgBox, 4th action
return

GuiClose:
ExitApp

编辑

如果要使用向上/向下箭头和Enter选择操作,则需要向gui 添加默认按钮

或这个:

Gui, +AlwaysOnTop
Gui, Add, ListBox, gAction vChoise w200 h60, one|two|three|four
return

; Press F1 to show the gui:
F1:: Gui, Show, x0 y0, Actions

Action:
If ((A_GuiEvent = "DoubleClick") || (Trigger_Action))
{
    Gui, Submit
    If (Choise = "one")
        MsgBox, 1st action 
    If (Choise = "two")
        MsgBox, 2nd action
    If (Choise = "three")
        MsgBox, 3rd action
    If (Choise = "four")
        MsgBox, 4th action
}
return

#If WinActive("Actions ahk_class AutoHotkeyGUI")

    Enter::
        Trigger_Action := true
        GoSub, Action
        Trigger_Action := false
    return

#If

GuiClose:
ExitApp

您好@ user3419297,谢谢,这对我们很有帮助。还有一件事情,请您编辑一下。1]将框增大,并显示所有选项1、2、3、4(无需单击下拉箭头以显示选项),按钮也许.. 2.]使自动热键图标停留在系统托盘上。
Faye

@ user3419297,您好:我们的发票记录宏已使用您的“答案”-完成。.谢谢。
Faye

@ user3419297,您好:我们如何通过使用向上/向下箭头然后按Enter(而不是鼠标)进行选择?
Faye

谢谢,现在工作正常。:)顺便说一句,由于我每次在记事本中创建ahk时,这些代码在每个新脚本中都是必需的还是必需的?#NoEnv #Warn SendMode输入SetWorkingDir%A_ScriptDir%吗?
Faye

每个脚本中都不需要它们。它们只是为了提高性能,兼容性,速度和可靠性而建议使用的指令或命令。您可以通过编辑%WINDIR%\ ShellNew文件夹中的模板文件来删除或添加更多它们。检查文档中每一个的单独描述。
user3419297 '17
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.