0

我正在尝试创建我的第一个 GUI。我今天才开始使用 AHK,并且大部分情况下发现它非常易于使用。我被困在一件事上。我创建了这个 GUI 来显示按钮,然后根据选择的内容输入某些文本。当我选择按钮时,它正在输入正确的文本,但它正在输入四次。我已经取下了一个按钮,所以只有三个,但它仍然会输入四次。我需要做些什么来确保它只输入一次?

MyGUI:

#SingleInstance Force
Gui, +LastFound +AlwaysOnTop

GUI, Add, Button, x10 y10 w75 h25 gClick1, Button &1
GUI, Add, Button, x95 y10 w75 h25 gClick2, Button &2
GUI, Add, Button, x10 y45 w75 h25 gClick3, ButtonS &3
GUI, Add, Button, x95 y45 w75 h25 gClickCancel, &Cancel
GUI, Show, w200 h100,My GUI
Return

Click1:
Send The first button was selected
Gui Hide
Return

Click2:
Send The second button was selected
Gui Hide
Return

Click3:
Send The third button was selected
Gui Hide
Return

ClickCancel:
Send The cancel button was selected
Gui Hide
Return
4

1 回答 1

1

我尚未对其进行测试,但可能是您的发送正在启动它。请记住,您首先发送键盘序列,然后隐藏 GUI,因此在您的情况下,GUI 在您发送的那一刻仍然处于活动状态!尝试先隐藏 GUI,然后发送或最初用 MsgBox 替换发送进行测试。您也可以在发送数据之前先发送一个 !{Esc} 将焦点切换回上一个应用程序,这样您就不需要隐藏 GUI。

好的,刚刚测试了我的假设,添加 !{Esc} 并按预期工作。

#SingleInstance Force
Gui, +LastFound +AlwaysOnTop

GUI, Add, Button, x10 y10 w75 h25 gClick1, Button &1
GUI, Add, Button, x95 y10 w75 h25 gClick2, Button &2
GUI, Add, Button, x10 y45 w75 h25 gClick3, ButtonS &3
GUI, Add, Button, x95 y45 w75 h25 gClickCancel, &Cancel
GUI, Show, w200 h100,My GUI
Return

Click1:
Send, !{Esc}
Send, The first button was selected
;Gui Hide
Return

Click2:
Send, !{Esc}
MsgBox, The second button was selected
;Gui Hide
Return

Click3:
Send, !{Esc}
MsgBox, The third button was selected
;Gui Hide
Return

ClickCancel:
Send, !{Esc}
MsgBox, The cancel button was selected
;Gui Hide
Return
于 2013-03-30T07:51:42.183 回答