2017-08-23 18 views
0

Escを押すたびに、現在実行中のスクリプトをリロードする簡単な.ahkファイルがあります。何らかの理由でグローバル変数を#includeするのはなぜですか?

; reload-hotkey.ahk 

Esc::Reload  ; reload script with Esc 

、このファイルをインポートすると、グローバル変数が正常に動作を停止する原因となります。私は私の#include文を削除した場合、予想通り

; test-file.ahk 

#Include %A_ScriptDir%\reload-hotkey.ahk ; This line causes the problem 
globalString := "Hello" 
^q:: 
    localString := "World" 
    MsgBox '%globalString% %localString'  ; Output: ' World' 
Return 

は、コードが動作します。

; test-file-2.ahk 

globalString := "Hello" 
^q:: 
    localString := "World" 
    MsgBox '%globalString% %localString%' ; Output: 'Hello World' 
Return 

これは、含まれているファイルにホットキーが含まれている場合にのみ発生します。関数にメソッドや関数だけが含まれている場合、私のコードは期待通りに動作します。

参考までに、私はAutoHotkey Unicode 32ビット1.1.26.01を使用しています。

なぜ#includeステートメントは、グローバル変数が正しく動作しないのですか?

答えて

1

変数の定義は、ホットキーまたはホットストリングの定義の前に行う必要があります。

変数定義をinclude文の上に置きます。

globalString := "Hello" 
#Include %A_ScriptDir%\reload-hotkey.ahk ; This line causes the problem 

詳細については、AutohotkeyのマニュアルのAuto-execute Sectionを参照してください。

+0

[CoordMode](https://autohotkey.com/docs/commands/CoordMode.htm)や[SetKeyDelay](https://autohotkey.com/docs/commands/SetKeyDelay.htm)のようなステートメントを追加します。また、ホットキーやホットストリングの定義の後に配置する必要があります。 –

関連する問題