私はAHKで小さなアプリケーションを書こうとしていますが、 フロー制御と構文の非常に基本的な理解が困難です。 基本的にこの質問は、AHKで シンプルなプログラムを書くにはどのように理解できますか?AHKの基本的なアプリケーション - メインループとフロー制御
ここでは、マウスの右ボタンでフラグ "pan_on"を に切り替えなければならない非常に単純なプログラムです。 次に、この値に応じて何かします。 「Rbutton」行で始まる
pan_on := false
Esc:: ExitApp
Rbutton::
tooltip, "button pressed"
pan_on := true
return
Rbutton up::
tooltip, "released"
pan_on := false
return
if (pan_on = true)
{
tooltip, "XXXXXXXXEngage"
}
ブロックが正しく に取り組んでいます。ただし、条件文を含む最後のブロック は決して実行されません。 最後のブロックまたはすべてのスクリプトの周りに無限ループを追加する doeasも役に立たない。
は、私はそのようなプログラミングスタイル(ここではPythonの構文を使用して)で、主によく知って:
pan_on = False
while True:
pan_on = False
if key_down[Esc]:
break
if key_down[Rbutton]:
pan_on = True
if key_up[Rbutton]:
pan_on = False
...
if pan_on:
draw_something()
は、だから私はプログラムを書くことから には、何もずっとdefferentを考えることはできませんが、それAutoHotkeyをが何かあるようです この意味で「特別」で、他のアプローチを使用する必要がありますか? 最初のAHKの例では、 "Rbutton ::"は常に準備完了状態にあり、無限ループ内の条件 "if key_down"と考えていますが、 ですが、
だから、私はどのように変更することなくこの簡単なアプリを作るのですか? コードスタイル? AHKのメインループはどこですか?どのように制御フローが動作するのですか? は、実行されているコード部分のエントリポイントをどのように管理するのですか? "Rbutton ::"の後にすべてを書き込むと動作しますが、 はプログラムを書き込む方法ではなく、 ロジックをさらに開発するのは難しいでしょう。
これは良い読書であるかもしれません:https://autohotkey.com/docs/Scripts.htm#auto、自動実行セクション(欠落しているメインループ)について説明します。複数のループがある場合は、代わりにタイマーを使用することができます。 https://autohotkey.com/docs/commands/SetTimer.htm – Blauhirn