AutoHotkeyは単独では何もしません。スクリプトが必要です。スクリプトとは、プログラムの指示を含む拡張子が.ahk
のプレーンテキストファイルのことで、コンフィギュレーションファイルのようなものですが、より強力なものです。スクリプトでできることは1つのアクションを実行して終了することだけですが、ほとんどのスクリプトでは、いくつかのホットキーを定義し、各ホットキーの後に、そのホットキーが押されたときに実行される1つまたは複数のアクションを記述します。
#z::Run "https://www.autohotkey.com" ; Win+Z ^!n:: ; Ctrl+Alt+N { if WinExist("Untitled - Notepad") WinActivate else Run "Notepad" }
ヒント:ブラウザがサポートしていれば、コードブロックの右上にマウスカーソルを置くと表示される「↓」ボタンをクリックすることで、上記のようなコードブロックをスクリプトファイルとしてダウンロードすることができます。
スクリプト・ファイルを作成する一般的な方法はいくつかあります:
.ahk
のファイルを保存します。システムによっては、エディタが別の拡張子(.txtなど)を追加しないように、名前を引用符で囲む必要があるかもしれません。
ASCII以外の文字が含まれる場合は、必ずBOM付きのUTF-8として保存してください。詳細はFAQを参照。
.ahk
が表示されている場合は、消さないように注意してください)。.ahk
を除く)を入力して、[作成]または[編集]をクリックします。スクリプトの作成に使用するテンプレートと保存場所は、このウィンドウで設定でき、必要に応じてデフォルトに設定することもできます。スクリプトの書き方についてはスクリプト言語を参照してください。
スクリプトを開いて編集するには、スクリプト ファイルを右クリックし、[スクリプトの編集]を選択します。スクリプトがすでに実行されている場合は、[編集]機能を使用するか、スクリプトのトレイ アイコンを右クリックして[スクリプトの編集]を選択します。まだデフォルトのエディタを選択していない場合は、エディタを選択するプロンプトが表示されます。そうでない場合は、Dashのエディター設定でデフォルトのエディターを変更できます。もちろん、最初にテキストエディタを開き、他のテキストファイルと同じようにスクリプトを開くこともできます。
スクリプトを編集した後、変更を有効にするには、スクリプトを実行するか再読み込みする必要があります。実行中のスクリプトは通常、トレイメニューからリロードできます。
AutoHotkeyをインストールすると、スクリプトを実行する方法がいくつかあります:
ほとんどのスクリプトは、実行中にのみ効果を発揮する。スクリプトを終了するには、トレイメニューまたはExitApp関数を使用します。Windowsがシャットダウンすると、スクリプトも強制終了する。ユーザーがログインした後にスクリプトが自動的に開始するように設定す るには、スクリプト ファイルへのショートカットをスタートアップフォルダに置くのが最も簡単な方法です。
スクリプトはコンパイルすることもできます。つまり、AutoHotkeyのバイナリファイルと組み合わせて、自己完結型の実行ファイル(.exe)を作成します。
デフォルトでは、各スクリプトはタスクバーの通知領域(一般にトレイと呼ばれる)に独自のアイコンを追加します。
トレイアイコンは通常このようになっている:
デフォルトのトレイアイコン。 | |
スクリプトは一時停止される。 | |
脚本は中断されている。 | |
スクリプトは一時停止され、中断される。 |
トレイアイコンを右クリックするとトレイメニューが表示され、デフォルトでは以下のオプションがあります:
デフォルトでは、トレイアイコンをダブルクリックすると、スクリプトのメインウィンドウが表示されます。
トレイアイコンとメニューの動作と外観はカスタマイズできる:
スクリプトのメインウィンドウは通常非表示になっていますが、トレイアイコンまたは以下に示す関数のいずれかを使用して表示すると、スクリプトのデバッグに役立つ情報にアクセスできます。表示メニューの項目は、メインウィンドウの表示を制御します:
既知の問題:スクリプトがメッセージボックスやその他のダイアログを表示している間、メニュー項目のキーボードショートカットが機能しない。
組み込み変数A_ScriptHwndには、スクリプトのメインウィンドウの一意なID(HWND)が格納される。
WinCloseでこのウィンドウを閉じると(他のスクリプトからでも)スクリプトが終了しますが、他のほとんどの方法ではウィンドウが非表示になるだけで、スクリプトは実行されたままになります。
メインウィンドウを最小化すると、自動的に非表示になる。これは、所有するウィンドウ(GUIウィンドウや特定のダイアログウィンドウなど)が自動的に最小化されるのを防ぐために行われるが、メインウィンドウのタスクバーボタンを隠す効果もある。代わりにメイン・ウィンドウを普通に最小化できるようにするには、OnMessageでデフォルトの処理をオーバーライドする。事例:
; This prevents the main window from hiding on minimize: OnMessage 0x0112, PreventAutoMinimize ; WM_SYSCOMMAND = 0x0112 OnMessage 0x0005, PreventAutoMinimize ; WM_SIZE = 0x0005 ; This prevents owned GUI windows (but not dialogs) from automatically minimizing: OnMessage 0x0018, PreventAutoMinimize Persistent PreventAutoMinimize(wParam, lParam, uMsg, hwnd) { if (uMsg = 0x0112 && wParam = 0xF020 && hwnd = A_ScriptHwnd) { ; SC_MINIMIZE = 0xF020 WinMinimize return 0 ; Prevent main window from hiding. } if (uMsg = 0x0005 && wParam = 1 && hwnd = A_ScriptHwnd) ; SIZE_MINIMIZED = 1 return 0 ; Prevent main window from hiding. if (uMsg = 0x0018 && lParam = 1) ; SW_PARENTCLOSING = 1 return 0 ; Prevent owned window from minimizing. }
スクリプトのメインウィンドウのタイトルは、#SingleInstanceおよびReloadメカニズムによって、同じスクリプトの他のインスタンスを識別するために使用されます。タイトルを変更することで、脚本がそのように特定されるのを防ぐことができる。デフォルトのタイトルは、スクリプトのロード方法によって異なります:
ロード元 | タイトル表現 | 例 |
---|---|---|
.ahk file | A_ScriptFullPath " - AutoHotkey v" A_AhkVersion | E:\My Script.ahk - AutoHotkey v1.1.33.09 |
メインリソース(コンパイル済みスクリプト) | A_ScriptFullPath | E:\My Script.exe |
その他のリソース | A_ScriptFullPath " - " A_LineFile | E:\My AutoHotkey.exe - *BUILTIN-TOOL.AHK |
次のコードは、デフォルトのタイトルをスクリプト自身で決定する方法を示している(ただし、実際のタイトルはWinGetTitleで取得できる):
title := A_ScriptFullPath if !A_IsCompiled title .= " - AutoHotkey v" A_AhkVersion ; For the correct result, this must be evaluated by the resource being executed, ; not an #include (unless the #include was merged into the script by Ahk2Exe): else if SubStr(A_LineFile, 1, 1) = "*" && A_LineFile != "*#1" title .= " - " A_LineFile
スクリプトは、Ahk2Exeコンパイラを使用してWin32(RCDATA)リソースとして追加することで、標準のAutoHotkey .exeファイルに埋め込むことができます。スクリプトを追加するには、AddResourceコンパイラー指令を参照してください。
埋め込みスクリプトは、アスタリスク(*)の後にリソース名を書くことで、コマンドラインまたは#Includeで指定できます。整数IDの場合、リソース名はハッシュ記号(#)の後に10進数を続けなければならない。
ファイル内にスクリプトコードが存在する場合、プログラムは自動的に以下のリソースからスクリプトコードをロードすることができる:
ID | Spec | 使用方法 |
---|---|---|
1 | *#1 | これは、.exeファイルからコンパイルされたスクリプトを作成する手段である。このスクリプトは自動的に実行され、ほとんどのコマンドラインスイッチはプログラムによって解釈されるのではなく、スクリプトに渡される。外部スクリプトおよび代替埋め込みスクリプトは、/scriptスイッチを使用して実行することができます。 |
2 | *#2 | このスクリプトがある場合、プログラムがロードするスクリプトの前、および/includeで指定されたファイルの前に、このスクリプトが自動的に「インクルード」される。 |
メイン・スクリプトのソースが埋め込みリソースである場合、プログラムは「コンパイル済みスクリプト」モードで動作するが、例外としてA_AhkPathには常に現在の実行可能ファイルのパスが含まれる(A_ScriptFullPathと同じ)。*#1以外のリソースについては、#SingleInstanceと Reloadをサポートするために、リソース指定子がメインウィンドウのタイトルに含まれる。
埋め込まれたリソースから来たコードから参照される場合、A_LineFileにはアスタリスク(*)の後にリソース名が付きます。
プログラムの動作に影響を与えるコマンド・ライン・スイッチのリストを含むコマンド・ラインの使用法については、スクリプトにコマンド・ライン・パラメータを渡すを参照してください。
AutoHotkey.exeファイルは、すべての.ahkスクリプトを起動するために必要なすべてのものです。
AutoHotkey.exeの名前を変更すると、デフォルトで実行されるスクリプトも変更されます。これは、AutoHotkeyがインストールされていないコンピュータで使用するためにスクリプトをコンパイルする代わりになります。たとえば、MyScript.exeは、ファイル名が指定されなければ自動的にMyScript.ahkを実行するが、他のスクリプトを実行することもできる。
このランチャーは、1つのシステム上でv1とv2のスクリプトを1つのファイル名拡張子で使用できるようにするもので、必ずしもどちらかのバージョンを優先したり、スクリプトの起動方法を変えたりする必要はありません。これは、スクリプトに必要なバージョンの手がかりをチェックし、スクリプトを実行するための適切なexeを見つけることによって行われる。
スクリプトに#Requiresディレクティブが含まれている場合、ランチャーはその要件を満たすexeを探します。そうでなければ、ランチャーはオプションで構文をチェックする。つまり、2つのメジャーバージョンのどちらかでしか有効でないパターンをチェックする。よくあるパターンとしては、以下のようなものがある:
MsgBox, カンマ付き
、MsgBox % "ノーエンドパーセント"
、レガシー = 割り当て
。'一重引用符'
または太い矢印=>
を明確に使用する。検出は保守的であり、曖昧なケースは通常無視されるべきである。
検出に失敗した場合、デフォルトでは、ユーザーがバージョンを選択するためのメニューが表示されます。このデフォルトは、v1またはv2のいずれかを起動するように変更できる。
既知の制限事項:
/****/
のような行を含めることは合法だが、v2では行末の*/
はコメントを閉じるだけなので、このような行があるとスクリプトの大部分が(ランチャーとv1インタープリターの両方によって)無視される可能性がある。xyz,
はv2では無効なので、v1では有効なコマンドとみなされる。xyz 1
は、v2ではファンクション・ステートメントになり得るが、v1でも有効なコマンドであると見なされるため、無視される。注:メインファイルの先頭に#Requiresを付けて必須バージョンを宣言することで、曖昧さをなくすことができる。
ランチャーは、DashボードからアクセスできるLaunch Settings GUIで有効化、無効化、設定することができます。
すべてのスクリプトを特定のインタープリターで実行する ランチャーを無効にし、従来の方法で、すべてのスクリプトを実行するために使用するexeを選択できるようにします。v1 exeを選択すると、スタートメニューの "AutoHotkey"ショートカットを使用する以外、サポートスクリプトを実行することが難しくなりますのでご注意ください。
スクリプト起動時にバージョンを自動検出することで、ランチャーが有効になります。追加の設定は、ランチャーがどのインタープリターを使用するかを選択する方法を制御します。
同じバージョン番号の複数のインタープリターが見つかった場合、ランチャーはあらかじめ設定された、またはユーザーが定義した基準に従って、それらのインタープリターをランク付けすることができます。基準は、カンマで区切られた部分文字列のリストとして表すことができ、それぞれの部分文字列の前に"!"を付けて、マッチを否定することもできる。どの部分文字列がマッチしたかに基づいてスコアが計算され、左端の部分文字列が最も優先される。
ただし、"UIA"は例外で、ファイル名に"_UIA"が含まれる場合にマッチする。
例えば、_H, 64, !ANSI
は、AutoHotkey_Hがあればそれを選び、システムと互換性があれば64ビットを選び、最後にANSIよりもUnicodeを選びます。
Launcher Settings GUIでは、"Unicode 32-bit "などのオプションがドロップダウンリストに表示されますが、部分文字列のリストは手動で入力することができます。
追加の(優先順位の高い)条件は、/RunWithlauncherスイッチを使ってコマンドラインで指定できる。
スクリプト内で#Requiresディレクティブを使用することで、条件を指定することができます(対象のAutoHotkeyバージョンでサポートされている場合)。事例:
#Requires AutoHotkey v1.1.35 ; prefer 64-bit, Unicode. More comments.
インストーラーは "launch"という名前の隠しシェル動詞を登録し、/Launchスイッチでランチャーを実行する。この例に従って活用することができる:
pid := RunWait('*Launch "' PathOfScript '"')
.ahkファイルに対するデフォルトのアクションとは対照的である:
RunWait(PathOfScript)
のようなことを行っているかもしれないと仮定しなければなりません。ランチャーは、.ahkファイルがデフォルトでランチャーを使用するように設定されていない場合や、ランチャーの動作をより細かく制御したい場合に、コマンドラインで明示的に実行することができる。ランチャーがコンパイルされている場合、追加のランチャースイッチを除いて、その使用方法は基本的にAutoHotkey.exeと同じです。それ以外の場合、コマンドラインでの使用形式は以下の通り:
AutoHotkeyUX.exe launcher.ahk [Switches] [Script Filename] [Script Parameters]
通常、AutoHotkeyインストレーションのUXサブディレクトリにあるAutoHotkeyUX.exeとlauncher.ahkへのパスには、フルパスと引用符を使用します。AutoHotkeyUX.exe(単なるコピーです)の代わりに、AutoHotkey32.exeまたはAutoHotkey64.exeの適切なバージョンを使用できます。
スイッチには、標準的なスイッチと以下のランチャー専用スイッチを混在させることができる:
Switch | 意味 |
---|---|
/Launch | スクリプトの終了をバックグラウンドで待つのではなく、スクリプトを起動した直後にランチャーを終了させる。ランチャーの終了コードは、新しいスクリプト・プロセスのプロセスID(PID)である。 |
/RunWith 基準 | スクリプトの起動に使用する実行ファイルを決定するための追加基準を指定します。例えば、/RunWith UIA 。 |
/Which |
ランチャーがスクリプトを実行する代わりに、使用するインタープリターを特定し、それを返すようにする。 ランチャーの終了コードは、#Requiresまたはシンタックス(シンタックス検出が有効な場合)で識別される場合はメジャーバージョン番号(1または2)、そうでない場合は0です。 Stdoutは、
今後、追加ラインが返される可能性もある。 |
Dashは、サポートスクリプトとドキュメントへのアクセスを提供します。インストール後、スタートメニューの「AutoHotkey」ショートカットから開くか、インストールディレクトリからUXui-dash.ahkを直接実行して開くことができます。現在は、以下の項目を含むメニューに過ぎないが、アクティブなスクリプトのコントロールや、その他の便利な機能を提供するために拡張されるかもしれない。
スタート]メニューのショートカットはDashを起動しますが、タスクバー(またはWindows 7や10では[スタート]メニュー)に固定されている場合、ジャンプリストには[開く]、[runas]、[UIAccess]シェル動詞で起動された最近のスクリプトが含まれることに注意してください(通常、エクスプローラーのコンテキストメニューまたはファイルをダブルクリックしてアクセスします)。スクリプトは簡単にアクセスできるようにピン留めできます。
新規スクリプトGUIは、Dashボタンからアクセスするか、エクスプローラでフォルダ内を右クリックし、新規作成 → AutoHotkeyスクリプトを選択することで表示されます。プリインストールされたテンプレートまたはユーザー定義のテンプレートから新しいスクリプトファイルを作成し、オプションでそれを開いて編集するために使用することができます。
リスト内のテンプレートを右クリックすると、以下のオプションが表示されます:
HKCU\Software\AutoHotkey\New\HideTemplate
から対応するレジストリ値を削除する。デフォルトでは、ファイルを作成した後、Ctrlキーを押し続けない限り、GUIは閉じます。
その他の設定は、GUI の左下にある設定ボタンからアクセスできます:
テンプレートファイルは、UX\Templates(プリインストール)と%A_MyDocuments%\AutoHotkey\Templates(ユーザー)から引かれ、ユーザー定義のテンプレートは、同じ名前を持つプリインストールされたテンプレートを上書きします。ファイルが%A_WinDir%\ShellNew\Template.ahkに存在する場合、それは「Legacy」として表示され、その名前のユーザー定義テンプレートで上書きすることができる。
各テンプレートは、以下のようなINIセクションを含むことができる:
/* [NewScriptTemplate] Description = Descriptive text Execute = true|false|1|0 */
上記のように、INIセクションが/*
で始まり、*/
で終わる場合、作成されたファイルには含まれない。
Descriptionは任意である。GUIでは、ファイル名の他にこの文字も表示される。
Execute は任意である。trueに設定された場合、テンプレートスクリプトが実行され、A_Args[1]
には作成されるファイルのパスが、A_Args[2]
にはユーザーがクリックしたボタンに応じて "Create"または "Edit"が格納されます。テンプレート・スクリプトは、ファイルを作成し、該当する場合は編集用に開くことが期待される。テンプレートスクリプトが他のファイルを#include
する必要がある場合、それらをサブディレクトリに置くことで、テンプレートリストに表示されないようにすることができる。
このインストーラと関連スクリプトは、複数のバージョンのAutoHotkeyが共存できるように設計されています。ほとんどのことはインストール後に設定できるため、インストーラーが提供するオプションはほとんどない。インストール時には、以下の選択のみを行う必要があります:
デフォルトでは、インストーラーは全ユーザーの「%A_ProgramFiles%\AutoHotkey」にインストールします。UI Accessオプションでは、プログラムをProgram Filesの下にインストールする必要があるため、これをお勧めします。インストーラがまだ管理者として実行されていない場合、インストールボタンがクリックされると、ボタン上のシールドアイコンで示されるように、昇格を試みます。
現在のユーザーによるインストールでは、ユーザーが選択したディレクトリへの書き込み権限を持っている限り、管理者権限は必要ありません。カレントユーザインストールのデフォルトディレクトリは、「%LocalAppData%\Programs\AutoHotkey」です。
v1とv2を一緒にインストールする方法は2つある:
/install
スイッチを使う。各バージョンはそれぞれのサブディレクトリにインストールされる。v1.1.34.02以前のインストーラ(またはv1.1.34.03以降のカスタムインストール)を実行すると、バージョン番号、アンインストーラエントリ、ファイルタイプ登録の一部など、v2インストーラによってレジストリに設定された値の一部が上書きされます。v1のアンインストーラーも登録されますが、これは両方のバージョンを正しくアンインストールすることができません。v2を再登録するには、任意のv2インストーラを再実行するか、AutoHotkey32.exeまたはAutoHotkey64.exeを使用してUXinstall.ahkを実行します。
v1のインストールとは異なり、インストール時にデフォルトのバージョンは選択されません。デフォルトはランチャーによってより動的に処理され、ユーザーごとに設定できる。
DESTINATIONディレクトリーに直接インストールするには、ソース・ディレクトリー内から、以下のように/installto
または/to
(2つのスイッチは交換可能)を使用する。ダウンロードしたsetup.exeか、ダウンロードしたzipなどから展開したファイルを使用する。
AutoHotkey_setup.exe /installto "%DESTINATION%"
AutoHotkey32.exe UX\install.ahk /to "%DESTINATION%"
SOURCE(AutoHotkey*.exeファイルを含むディレクトリ)から追加バージョンをインストールするには、現在のインストールディレクトリ内で以下を実行します(必要に応じてAutoHotkey32.exeのパスを調整します):
AutoHotkey32.exe UX\install.ahk /install "%SOURCE%"
上記の完全なコマンド文字列は、%1
をソースディレクトリの代用として、HKLM\Software\AutoHotkey
またはHKCU\Software\AutoHotkey
の下でInstallCommandとして登録される。このレジストリ値を使用する方が、将来的により安全かもしれない。
現在のインストールを再登録する:
AutoHotkey32.exe UX\install.ahk
アンインストールする:
AutoHotkey32.exe UX\install.ahk /uninstall
または、以下のレジストリキーのいずれかからQuietUninstallStringの値を読み取り、実行する:
HKLM\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey HKCU\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey
/silent
スイッチを使用すると、警告ダイアログや確認ダイアログが表示されず、インストール完了時にDashが表示されなくなります。以下のアクションは、警告なしに自動的に実行されることがあります:
v2インストーラーには、タスクバーボタンを分離するオプションがありません。これまでは、各AutoHotkey実行ファイルをホストアプリ(IsHostApp)として登録することで実現していましたが、この方法には限界があり、複数のバージョンをインストールできるようになると管理しにくくなります。代わりに、各スクリプトは、グループ化を制御するために、そのプロセスまたはウィンドウのAppUserModelIDを設定する必要があります。
Program Filesの下にインストールする場合、インストーラは、いくつかの一般的なUAC関連の問題を回避するために使用できるAutoHotkey exeファイルの追加セットを作成します。これらのファイルには"_UIA.exe "という接尾辞が付けられます。これらのUIA.exeファイルの1つを管理者が使用してスクリプトを実行すると、スクリプト自体が管理者として実行されることなく、スクリプトは管理者として実行されるプログラムのウィンドウと対話することができます。
インストーラーは以下のことを行う:
ランチャーは、v1スクリプト、v2スクリプト、またはその両方をUIアクセスで実行するよう設定することもできますが、選択したバージョンとビルドのUIA.exeファイルが存在しない場合、このオプションは機能しません。
UIアクセスで他のスクリプトを実行する必要があるスクリプトは、適切なUIA.exeファイルを通常のコマンドラインパラメータで実行するだけです。あるいは、UIAccessシェル動詞が登録されていれば、Run経由で使用することもできます。For example: Run '*UIAccess "Script.ahk"'
既知の制限事項:
ComObjActive("Word.Application")
は、WordがUIアクセス用にマークされていないため、失敗します。InstallMouseHook
のような単純なものであっても)、マウスがUIAスクリプトが所有するウィンドウを指しているときに、すべてのマウスホットキーが動作しなくなることがあります。回避策は、UIAスクリプトが最後にロードされるようにすることです。詳しくは、アーカイブフォーラムの「管理プログラムとの相互作用を有効にする」をご覧ください。