如何将复选框添加到我现有的(工作中的)简单 AutoHotKey GUI window 脚本?

How do I add a checkbox to my existing (working) simple AutoHotKey GUI window script?

我目前有这个:

InputBox, UserInput, My private search engine, Specify a search string:, , 320, 128
if not ErrorLevel
{
    UserInput := StrReplace(UserInput, """", "\""")
    Run %ComSpec% /c "php "C:\test\engine.php" "--query=%UserInput%"
}

当 运行 时,它会显示一个带有简单文本输入的小 GUI window,要求我输入查询。当我单击“确定”或按 Enter 键时,它会执行我的 engine.php PHP CLI 脚本,并将搜索查询作为参数(执行所有实际工作)。这个简单的事情让我花了 非常 很长时间的阅读、搜索、测试和咒骂才弄明白。特别是, UserInput := StrReplace(UserInput, """", "\""") 部分在我弄明白之前几乎把我逼疯了。 (如果你不这样做,各种输入字符都会破坏整个事情。)

有效。但是,我发现我经常想指定一些复选框选项,例如 [ ] Skip the videos dir。所以我需要添加这样一个复选框。

如果这是 HTML,我会知道该怎么做。但事实并非如此。这是 AutoHotKey 脚本,坦率地说,它令人气愤。尽管阅读了手册中的相关部分,我还是不知道该怎么做。至此我已经放弃了,迫不得已求助

我如何在我现有的代码中添加一个复选框,在我的文本输入框下方可视化,然后它也作为参数发送,例如 ... "--option1=%Something%"?

您将要为此创建一个 gui
而且我认为您在该命令行中遗漏了或多了一个引号。
第一个报价(这里的第一个:"php "C:\tes...)似乎没有结束报价(?)

但无论如何,在这里:

#Persistent

Gui, New, -MinimizeBox, % "My private search engine"
Gui, Add, Text, , % "Specify a search string:"
Gui, Add, Edit, vUserInput w300
Gui, Add, Checkbox, vMyCheckbox, % "Check Me!"
Gui, Add, Button, gOkButtonPress w50 h25 x80, % "OK"
Gui, Add, Button, gGuiClose w50 h25 x160 y71, % "Cancel"
Gui, Show, Center
return

OkButtonPress:
    Gui, Submit
    if (MyCheckbox)
        MsgBox, % "Checkbox was checked!"
    else
        MsgBox, % "Checkbox wasn't checked!"
    
    UserInput := StrReplace(UserInput, """", "\""")
    Run, % A_ComSpec " /c ""php ""C:\test\engine.php"" ""--query=" UserInput """"
return

GuiClose:
    ExitApp
return

#Persistent (docs) 用于使脚本在您 运行 时不会立即退出,因为没有热键或一旦代码执行完成,任何其他会使脚本不退出的东西。

然后是创建 gui 的时候了。
如果您是第一次使用 AHK guis,这里有很多内容需要了解。
尝试打开相关文档页面,看看我在那里做了什么。
https://www.autohotkey.com/docs/commands/Gui.htm#New
https://www.autohotkey.com/docs/commands/Gui.htm#Add
https://www.autohotkey.com/docs/commands/Gui.htm#Events
https://www.autohotkey.com/docs/commands/Gui.htm#GuiClose
如果有不明白的地方,尽管问。

首先,我添加了文本控件、编辑控件和复选框控件,但没有指定任何 x 或 y 坐标。
这样 AHK 就会为您处理好位置并将它们很好地放在彼此下面。
对于这两个按钮,我自己指定了坐标。如果你只是盲目地这样做有点棘手,但反复试验会让你到达那里,哈哈。
如果你想创建更多花哨的图形用户界面,而不是在试图在脑海中想象你想要的坐标和 width/height 时拉扯你的头发,我建议使用例如SmartGuiXp (image).
它会让创建 AHK GUI 变得更加愉快。

然后我在屏幕中央显示 gui,我让 AHK 担心 width/height 它应该有什么,所以我没有指定任何内容。

此外,使用 % " " 明确指定字符串只是个人喜好,不需要。它对我来说看起来很合适,而且没有传统 AHK 的感觉。

OkButtonPress 标签中(顺便说一句,标签是遗留的 AHK。我会使用函数,但我们不得不担心变量范围,所以我决定不让这个答案更混乱)第一个线是
Gui, Submit(docs)
这使得 gui 将我们控件的内容保存到关联的变量中。
所以我们的文本输入 UserInput 和复选框的状态 MyCheckbox.

然后我们终于到了运行命令。
我没有修复缺少结束引号的可能问题。
我只是将它从遗留语法更改为现代表达式语法。当然你不需要这样做,如果你愿意,你可以保留它在旧语法中。