イントロダクション

ここでは、AutoHotkeyの特徴と機能について紹介する。

スクリプトエンジン

AutoHotkeyでは、動作設定をスクリプトとして記述する。
ホットキーに動作を割り当てる場合も、単に何らかの処理を行う場合も、テキストエディタで処理内容を記述して実行するだけでよい。

変数に値を格納して使用したり、条件分岐や繰り返し、サブルーチン呼び出しなどのコマンドにより、複雑な処理を行わせることも可能。

スクリプトの詳細については、スクリプトの項を参照。
また、使用できるコマンドについてはリファレンスを参照。

EXEファイル化

ahk2exe.exeを使用することで、スクリプトを組み込んだEXEファイルを作成できる。
これにより、AutoHotkeyがインストールされていない環境でも、作成したスクリプトを使用しやすくなっている。

ホットキー割り当て

スクリプトを常駐させて、特定のキーが押されたときに任意の処理を行わせることが出来る。
「Ctrl+F1」のようなキーの組み合わせにも割り当てられる。
また、キーボードフックを利用することにより、「Win+E」のようなWindowsがあらかじめ使用しているホットキーを上書きしてしまうことも出来る。

キーと動作の対応は、あらかじめスクリプトに記述するほか、Hotkeyコマンドで実行中に割り当て/解除を行うことも出来る。
また、Suspendキーで一時的に無効化することも出来る。

また、#IfWinActive指令などにより、ウィンドウの種類に応じて別の処理を割り当てたりすることも可能。

詳細についてはホットキーの項を参照。

マウス、ジョイスティック対応

ホットキーには、多機能キーボードの特殊キーなどを含め、ほとんどのキーを使用できる。
更に、マウスのボタン(右、左、ホイールボタン、拡張ボタン1,2,ホイールの上下回転)やジョイスティックの各ボタンにも、キーボードと同様に機能の割り当てが行える。

使用できるキー名の一覧については、キーリストの項を参照。

なお、ジョイスティックの方向キーへの割り当ては行えないが、GetKeyStateコマンドで状態を取得できる。
方向キーは、アナログで6軸まで対応している。

キーボード/ボタンリマップ

キーが押されたときに別のキーを押したのと同じ動作にするリマップは、特別な書式で簡単に記述できる。
詳細はリマップの項を参照。

ホットストリング

キーボードで特定の文字列がタイプされたときに任意の処理を行わせる「ホットストリング」という機能も利用できる。
入力した文字列を削除して別の文字列を打ち直す自動置換を行わせることも可能。
詳細はホットストリングの項を参照。

操作自動化機能

キーボードやマウスの操作を自動で行ったり、ウィンドウの状態を変化させたりする機能が用意されている。
これらの機能は、ホットキーに割り当てて操作性の改善に使っても良いし、面倒な作業を自動化するスクリプトの作成にも役立つ。

キーボード・マウスの操作

Sendコマンドでキーボード操作を発生させることが出来る。
一連のキー入力をまとめて送信したり、キーを押し下げたままにしたりすることも可能。

Clickコマンドなどでは、マウス操作を発生させられる。

その他のキーボード関連コマンドについてはキーボード関連コマンドの一覧を、マウス関連コマンドについてはマウス関連コマンドの一覧を参照。

ウィンドウ、コントロールの操作

ウィンドウを閉じたり移動するなど、様々なウィンドウ操作コマンドが用意されている。
また、ウィンドウ上のボタンを押したりするコントロール操作コマンドも利用できる。
更に、SendMessageコマンドを利用すれば、ウィンドウメッセージを送信して様々な操作を行うことが出来る。

WinGetコマンドなどではウィンドウの各種情報が取得できるほか、IfWinActiveコマンドなどでウィンドウの状態に応じて処理を分岐させることも可能。

その他のウィンドウ関連コマンドについては、ウィンドウ関連コマンドの一覧を参照。

常駐機能

ホットキーを割り当てる以外にも、常駐ユーティリティを作成するのに有用な機能が用意されている。

タイマー

SetTimerコマンドにより、定期的に任意の処理を実行させることが出来る。

また、OS起動時からの時間が格納されるA_TickCountや操作を行っていなかった時間を格納するA_TimeIdle等の組み込み変数を利用して時間経過を知ることも出来る。

タスクトレイアイコン

AutoHotkeyのスクリプトが実行されると、タスクトレイにアイコンが表示される。
アイコン画像や右クリックメニュー、ダブルクリックしたときの処理などはMenuコマンドで変更できる。
バルーンメッセージを表示するTrayTipコマンドもある。

多彩なコマンド

プログラムの実行、プロセス操作

Run/RunWaitコマンドで任意のプログラムを起動できる。
RunWaitコマンドでは、プログラムが終了するまで待機することができる。

実行中の他のプロセスは、Processコマンドで検出したり強制終了や優先度の変更などの操作が行える。

ファイル操作

ファイルのコピーや削除などの操作を行ったり、サイズや属性などを取得したりするコマンドが用意されている。
ワイルドカードや相対パスが使用できるので、対象ファイルの指定が楽に出来る。

また、テキストファイルの読み書きも可能
指定したファイル名パターンに一致するファイルに対し同じ処理を繰り返し行うファイルLoopや、テキストファイルを1行ずつ読み込みながら同じ処理を繰り返すLoop,READなどの機能もある。
詳細はファイル関連コマンドの一覧を参照。

クリップボード処理

クリップボードに格納された文字列はClipboard変数として読み込むことができる。
また、Clipboard変数に代入してクリップボードの内容を変更することも出来る。
OnClipboardChangeというラベルを記述しておけば、クリップボードの内容が変更されたときに任意の処理が実行されるようにすることも出来る。

詳細はクリップボードの項を参照。

iniファイル、レジストリ、環境変数の取り扱い

Iniファイルの読み書きを行うコマンド群レジストリの読み書きを行うコマンド群環境変数の情報を取得・設定するコマンド群も用意されている。
EnvSetコマンドで設定された環境変数は、Runコマンドで起動したプロセスに引き継がれる。

Windowsシャットダウン

Shutdownコマンドにより、Windowsを終了させたり再起動させたりすることが出来る。

なお、OnExitコマンドを使用すれば、Windowsがシャットダウンされようとしている時に任意の処理が実行されるようにすることも出来る。

画面上のピクセル色や画像の検出

PixelGetColorコマンドやPixelSearchコマンドで画面上のピクセルの色を判別したり、 ImageSearchコマンドで特定の画像に一致する部分があるかを検出したり出来る。
これらの機能は、ゲームなどのように他の方法で状態を取得できないアプリケーションを自動操作したいときなどに役立つ。

ユーザー定義関数

コマンドを新たに定義することは出来ないが、関数は自由に定義できる。
関数は、コマンドのようにその場で単に実行することも、の中で使用することも出来る。

DLL呼び出し

DLLが提供する関数を呼び出すDllCall()という関数が用意されている。
Windowsに標準で含まれるDLLや、公開されているライブラリなどを利用することで、AutoHotkeyのコマンドだけでは不可能な機能も実現できる場合がある。

GUI機能

情報を表示したり入力を受け付けたりするためのGUIも簡単に表示できる。
用意されているコマンドについては、GUI関連コマンドの一覧を参照。

ダイアログ等の表示

MsgBoxコマンドでは、メッセージや確認のダイアログを表示できる。
テキスト入力を求めるダイアログを表示するInputBoxコマンド、ファイルやフォルダを選択するダイアログを表示するFileSelectFileFileSelectFolderコマンドなどもある。

プログレスバーを表示するProgressコマンド、ツールチップテキストを表示するTooltipコマンドなどでも情報を表示できる。

Menuコマンドでは任意のポップアップメニューを作成して表示できる。
各メニュー項目に任意の処理を割り当てられる。

GUIフォーム作成

Guiコマンドでは、ウィンドウを作成して自由にコントロールを配置することが出来る。
ウィンドウやコントロールのサイズ・位置などは、指定しなければ自動的に決定されるので、少ない記述で実用的なGUIが作成できる。
ボタンが押されたり入力内容が変更されたときに任意の処理が実行されるように設定することが出来る。
コントロールに変数を割り当てておけば、一括して入力内容を取得できる。

高度なGUI処理

タイトルバー無しや半透明などのウィンドウスタイルを持ったGUIウィンドウも作成できる。
ウィンドウスタイルについては、ウィンドウスタイルの項に一覧が用意されているほか、Web上にも多数解説がある。

OnMessage()関数により、Guiウィンドウが特定のメッセージを受け取ったときに任意の関数が呼び出されるように設定することが出来る。