2014-02-14 49 views
0

我正在使用以下AHK腳本彈出帶複選框的屏幕。想法是,當我檢查框時,它應該打開一個文件夾。它適用於第一個,但是當我檢查第二個時沒有任何反應。任何想法什麼錯我的代碼AHK 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: 
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 

回答

2

當您使用if語句沒有大括號,只有下面的行由if語句讀取。

這意味着,當你這樣做:

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

...程序結束。 if語句執行運行命令,return無論如何都會被處理。

所以,試試這個,而是,如果你想多行:

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

而且,什麼都不會發生呢!首先,當您選中該框時,您沒有子處理複選框。換句話說,當你點擊複選框時,什麼都不應該發生。所以,我想你只是想在按下「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和更改熱鍵的命令。

+0

BGM,真棒。謝謝!還有一個問題,如果我想用快捷方式運行此程序,應該添加什麼?我試着在它前面添加::#x,但那不起作用 – user181796

+0

好吧,你已經得到了命令 - 你應該閱讀熱鍵的文檔,你知道。我會將它添加到你的答案中。 – bgmCoder