AutoHotkeyスクリプトの書き方

AutoHotkeyは素晴らしいが複雑なソフトウェアです。当初はカスタムホットキーをさまざまなアクションに再バインドすることを目的としていましたが、現在は完全なWindows自動化スイートになっています。

AHKは、一般的な概念がかなり単純であるため、新規ユーザーにとって特に習得するのは難しいことではありませんが、完全なチューリング完全プログラミング言語です。プログラミングのバックグラウンドがあるか、概念に精通している場合は、構文をはるかに簡単に理解できます。

AutoHotkeyのインストールと使用

AutoHotkeyのインストールプロセスは簡単です。公式ウェブサイトからインストーラーをダウンロードして実行します。「高速インストール」を選択します。ソフトウェアをインストールしたら、任意の場所を右クリックして、[新規]> [AutoHotkeyスクリプト]を選択して、新しいスクリプトを作成できます。

AHKスクリプトは、.ahk 拡張子が付いたテキストファイルです。それらを右クリックすると、いくつかのオプションが表示されます。

  • 「スクリプトの実行」は、AHKランタイムでスクリプトをロードします。
  • 「CompileScript」はそれをAHK実行可能ファイルとバンドルして、実行可能なEXEファイルを作成します。
  • 「スクリプトの編集」は、デフォルトのテキストエディタでスクリプトを開きます。メモ帳を使用してAHKスクリプトを作成できますが、構文の強調表示とデバッグをサポートするAHKのエディターであるSciTE4AutoHotkeyを使用することをお勧めします。

スクリプトの実行中(EXEであるかどうかに関係なく)、Windows通知領域(システムトレイとも呼ばれます)のバックグラウンドでスクリプトが実行されていることがわかります。「H」が付いた緑色のアイコンを探します。

スクリプトを終了、一時停止、再読み込み、または編集するには、通知アイコンを右クリックして適切なオプションを選択します。スクリプトは、終了するまでバックグラウンドで実行され続けます。もちろん、Windowsからサインアウトしたり、PCを再起動したりすると、これらは消えます。

AutoHotkeyはどのように機能しますか?

AHKの核となるのは、アクションをホットキーにバインドすることです。さまざまなアクション、ホットキーの組み合わせ、および制御構造がありますが、すべてのスクリプトは同じ原則で動作します。Windows + Cを押すたびにGoogleChromeを起動する基本的なAHKスクリプトは次のとおりです。

#c :: Chromeリターンを実行する

最初の行はホットキーを定義します。ポンド記号(#)はWindowsキーの略c で、キーボードのCキーです。その後、アクションブロックの開始を示す二重コロン(::)があります。

次の行はアクションです。この場合、アクションはRun コマンドを使用してアプリケーションを起動します。ブロックは最後にareturn で終了します。の前に任意の数のアクションを設定できますreturn。それらはすべて順番に発砲します。

そのように、単純なキーからアクションへのマッピングを定義しました。これらを.ahk ファイルにいくつでも配置し、バックグラウンドで実行するように設定して、常に再マップするホットキーを探すことができます。

ホットキーと修飾子

AHKの修飾子の完全なリストは公式ドキュメントにありますが、最も便利な(そしてクールな)機能に焦点を当てます。

修飾キーはすべて1文字の省略形です。たとえば、# ! ^ +それぞれWindows、Alt、Control、Shiftです。また、<and>修飾子を使用して、Alt、Control、Shiftを左右に区別することもできます。これにより、追加のホットキーのための多くのスペースが開かれます。たとえば、+は右Shiftです。参照できるすべてのキーリストを確認してください。(ネタバレ:ほぼすべてのキーを参照できます。小さな拡張子を持つ他のキーボード以外の入力デバイスを参照することもできます)。

必要な数のキーを1つのホットキーに組み合わせることができますが、覚えておくべきキーの組み合わせがすぐになくなります。ここで、クレイジーなことを実行できる修飾子が登場します。AHKドキュメントの例を分解してみましょう。

#IfWinActiveディレクティブと呼ば れ、スクリプト内で物理的にその下にあるホットキーに追加のコンテキストを適用します。それ以降のホットキーは、条件がtrueの場合にのみ起動し、1つのディレクティブで複数のホットキーをグループ化できます。このディレクティブは、別のディレクティブを押すまで変更されませんが、空白でリセットできます#If(ハックのように思われる場合は、AHKへようこそ)。

ここでのディレクティブは、で定義された特定のウィンドウが開いているかどうかをチェックしていahk_class Notepadます。AHKは、入力「Win + C」を受信すると#IfWinActive 、ディレクティブがtrueを返した場合にのみ最初のアクションを実行し、そうでない場合は2番目のアクションをチェックします。AHKには多くのディレクティブがあり、それらはすべてドキュメントにあります。

AutoHotkeyにはホットストリングもあり、テキストの文字列全体を置き換えることを除けば、ホットキーのように機能します。これは、オートコレクトの仕組みに似ていますが(実際、AHKのオートコレクトスクリプトがあります)、すべてのAHKアクションをサポートしています。

ホットストリングは、正確に入力された場合にのみ文字列と一致します。一致したテキストを自動的に削除してホットストリングを置き換えますが、この動作は調整できます。

行動

AHKでのアクションは、オペレーティングシステムに外部から影響を与えるものです。AHKにはたくさんのアクションがあります。それらすべてを説明することはできないので、役立つものをいくつか選びます。

  • テキストであろうとさまざまなボタンの押下であろうと、入力を送信します。
  • マウスを動かします。実際、AHKは、完全に機能するエイムボットを作成しているため、ビデオゲームのチートソフトウェアとして誤ってフラグが付けられることがあります。
  • 現在のウィンドウを基準にしてマウスをクリックします。
  • フォームと入力フィールドを備えたダイアログメニューを表示します。
  • ウィンドウの移動、サイズの調整、開閉。
  • 音楽を演奏。
  • Windowsレジストリへの書き込み。はい、そうです。
  • クリップボードの内容を変更します。
  • ファイルの読み取りと書き込み。ファイルをループして、各行でアクションを実行できます。AHKは、.ahk ファイルに書き込んだり、独自のコードを調整したりすることもできます。

これらのアクションのほとんどには、情報指向のコマンドも関連付けられています。たとえば、クリップボードに書き込むことができますが、クリップボードの内容を取得して変数に格納し、クリップボードが変更されたときに関数を実行することもできます。

すべてを制御構造と結び付ける

AHKは、チューリング完全にするためのすべての制御構造がなければ、それが何であるかはわかりません。

#Ifディレクティブに加えて、If アクションブロックの内部にもアクセスできます。 AHKはありFor ループ、中括弧ブロック、Try およびCatchステートメント、および他の多くの。アクションブロック内から外部データにアクセスし、後で使用するために変数またはオブジェクトに保存できます。カスタム関数とラベルを定義できます。実際、別のプログラミング言語で簡単にできることはすべて、AHKでできることですが、少し頭痛がして、ドキュメントを確認する必要があります。

たとえば、退屈で反復的なタスクがあり、複数のボタンを続けてクリックし、サーバーが応答するのを待ってから、無限にやり直す必要があるとします。AHKを使用してこれを自動化できます。マウスを特定の場所に移動してクリックし、次の場所に移動してもう一度クリックするためのいくつかのループを定義する必要があります。壊れないように、いくつかの待機ステートメントをスローします。画面上のピクセルの色を読み取って、何が起こっているのかを判断することもできます。

確かなことが1つあります。スクリプトは、おそらくきれいではないでしょう。しかし、どちらもAutoHotkeyではなく、それは問題ありません。