AHK GUI不起作用

时间:2014-02-14 09:46:07

标签: autohotkey

我正在使用以下AHK脚本弹出带复选框的屏幕。想法是,当我检查框时,它应该打开一个文件夹。它适用于第一个,但当我检查第二个没有任何反应。任何想法我的代码都有错误

Gui, Add, Checkbox, vOpen, Open Bedrijfsbureau
Gui, Add, Checkbox, vOpen2, Open 


Gui, Add, Button, Default gButtonGo, Go
Gui, Show, w500 h300, Products
Return

ButtonGo:
Gui, Submit
Gui, Destroy


If Open = 1
Run "X:\SSC_HR\SENS\Bedrijfsbureau"
Return

If Open2 = 1
Run "X:\SSC_HR\SENS\Bedrijfsbureau\Dimensioneren"
Return


GUIClose:
Gui, Destroy

1 个答案:

答案 0 :(得分:2)

当您使用不带大括号的if语句时,if语句只读取以下行。

这意味着当你这样做时:

If Open = 1
Run "X:\SSC_HR\SENS\Bedrijfsbureau"
Return

......程序结束。 if语句执行run命令,return无论如何都会被处理。

所以,试试这个,相反,如果你想要多行:

If(Open = 1){
    Run "X:\SSC_HR\SENS\Bedrijfsbureau"
    Return
}

此外,无论如何都不会发生!首先,当您选中该复选框时,您没有子句来处理该复选框。换句话说,当您单击该复选框时,不会发生任何事情。所以,我想你只想在推动" Go"按钮。

那太好了,但你的go按钮做了两件事:它抓住了复选框的值,然后它退出了GUI ---->这就是为什么你的计划没有工作。

你想这样做,而不是:

Gui, Add, Checkbox, vOpen, Open Bedrijfsbureau
Gui, Add, Checkbox, vOpen2, Open 


Gui, Add, Button, Default gButtonGo, Go
Gui, Show, w500 h300, Products
Return

ButtonGo:
    ;fetch the value of the checkbox variables
    Gui, Submit 

    If Open = 1
    Run "X:\SSC_HR\SENS\Bedrijfsbureau"

    If Open2 = 1
    Run "X:\SSC_HR\SENS\Bedrijfsbureau\Dimensioneren"

    ;Now, if you want the gui to close after the actions are complete, then uncomment the next line - if you want the gui to remain, then don't uncomment it.
    ;Gui, Destroy
RETURN

GUIClose:
Gui, Destroy

最后,在这种情况下,您可以执行一个或两个复选框命令。如果你只想要一个或另一个,你应该使用单选按钮。

使用热键运行主要功能:

#x::
gosub, ButtonGo
return

如果您希望热键打开GUI,则需要将GUI包装在gosub中并更改热键的命令。