プログラムの使用

AutoHotkeyは単独では何もしません。スクリプトが必要です。スクリプトとは、プログラムの指示を含む、拡張子.ahkのプレーンテキストファイルのことで、コンフィギュレーションファイルのようなものだが、より強力なものである。スクリプトでできることは、1つのアクションを実行して終了することだけですが、ほとんどのスクリプトでは、いくつかのホットキーを定義し、各ホットキーの後に、そのホットキーが押されたときに実行される1つまたは複数のアクションを記述します。

#z::Run "https://www.autohotkey.com"  ; Win+Z

^!n::  ; Ctrl+Alt+N
{
    if WinExist("Untitled - Notepad")
        WinActivate
    else
        Run "Notepad"
}

ヒント:ブラウザがサポートしていれば、コードブロックの右上にマウスカーソルを置くと表示されるボタンをクリックすることで、上記のようなコードブロックをスクリプトファイルとしてダウンロードすることができます。

目次

スクリプトの作成

スクリプト・ファイルを作成する一般的な方法はいくつかある:

スクリプトの書き方についてはスクリプト言語を参照。

スクリプトの編集

スクリプトを開いて編集するには、スクリプト ファイルを右クリックし、[スクリプトの編集]を選択します。スクリプトがすでに実行されている場合は、[編集]機能を使用するか、スクリプトのトレイ アイコンを右クリックして[スクリプトの編集]を選択します。まだデフォルトのエディタを選択していない場合は、エディタを選択するプロンプトが表示されます。そうでない場合は、ダッシュエディター設定でデフォルトのエディターを変更できます。もちろん、最初にテキストエディタを開き、他のテキストファイルと同じようにスクリプトを開くこともできる。

スクリプトを編集した後、変更を有効にするには、スクリプトを実行するか再読み込みする必要があります。実行中のスクリプトは通常、トレイメニューからリロードできる。

スクリプトの実行

AutoHotkeyをインストールすると、スクリプトを実行する方法がいくつかあります:

ほとんどのスクリプトは、実行中にのみ効果を発揮する。スクリプトを終了するには、トレイメニューまたはExitApp関数を使用します。Windowsがシャットダウンすると、スクリプトも強制終了する。ユーザーがログインした後にスクリプトが自動的に開始するように設定す るには、スクリプト ファイルへのショートカットをスタートアップフォルダに置くのが最も簡単な方法です。

スクリプトはコンパイルすることもできます。つまり、AutoHotkeyのバイナリファイルと組み合わせて、自己完結型の実行ファイル(.exe)を作成します。

トレイアイコン

デフォルトでは、各スクリプトはタスクバーの通知領域(一般にトレイと呼ばれる)に独自のアイコンを追加します。

トレイアイコンは通常このようになっている:

緑のHアイコン デフォルトのトレイアイコン。
緑のアイコンに一時停止マーク スクリプトは一時停止される。
緑色のアイコンに透明なH 脚本は中断されている。
緑色のアイコンに透明な一時停止マーク スクリプトは一時停止され、中断される。

トレイアイコンを右クリックするとトレイメニューが表示され、デフォルトでは以下のオプションがあります:

デフォルトでは、トレイアイコンをダブルクリックすると、スクリプトのメインウィンドウが表示されます。

トレイアイコンとメニューの動作と外観はカスタマイズできる:

メインウィンドウ

スクリプトのメインウィンドウは通常非表示になっていますが、トレイアイコンまたは以下に示す関数のいずれかを使用して表示すると、スクリプトのデバッグに役立つ情報にアクセスできます。表示メニューの項目は、メインウィンドウの表示を制御します:

既知の問題:スクリプトがメッセージボックスやその他のダイアログを表示している間、メニュー項目のキーボードショートカットが機能しない。

組み込み変数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.
}

Main Window Title

スクリプトのメインウィンドウのタイトルは、#SingleInstanceおよびReloadメカニズムによって、同じスクリプトの他のインスタンスを識別するために使用されます。タイトルを変更することで、脚本がそのように特定されるのを防ぐことができる。デフォルトのタイトルは、スクリプトのロード方法によって異なります:

ロード元タイトル表現
.ahk fileA_ScriptFullPath " - AutoHotkey v" A_AhkVersionE:\My Script.ahk - AutoHotkey v1.1.33.09
メインリソース(コンパイル済みスクリプト)A_ScriptFullPathE:\My Script.exe
その他のリソースA_ScriptFullPath " - " A_LineFileE:\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進数を続けなければならない。

ファイル内にスクリプトコードが存在する場合、プログラムは自動的に以下のリソースからスクリプトコードをロードすることができる:

IDSpec使用方法
1*#1 これは、.exeファイルからコンパイルされたスクリプトを作成する手段である。このスクリプトは自動的に実行され、ほとんどのコマンドラインスイッチはプログラムによって解釈されるのではなく、スクリプトに渡される。外部スクリプトおよび代替埋め込みスクリプトは、/scriptスイッチを使用して実行することができます。
2*#2 このスクリプトがある場合、プログラムがロードするスクリプトの前、および/includeで指定されたファイルの前に、このスクリプトが自動的に「インクルード」される。

メイン・スクリプトのソースが埋め込みリソースである場合、プログラムは「コンパイル済みスクリプト」モードで動作するが、例外としてA_AhkPathには常に現在の実行可能ファイルのパスが含まれる(A_ScriptFullPathと同じ)。1以外のリソースについては、#SingleInstanceReloadをサポートするために、リソース指定子がメインウィンドウのタイトルに含まれる。

埋め込まれたリソースから来たコードから参照される場合、A_LineFileにはアスタリスク(*)の後にリソース名が付きます。

コマンドラインの使用法

プログラムの動作に影響を与えるコマンド・ライン・スイッチのリストを含むコマンド・ラインの使用法については、スクリプトにコマンド・ライン・パラメータを渡すを参照してください。

AutoHotkey.exeの移植性

AutoHotkey.exeファイルは、すべての.ahkスクリプトを起動するために必要なすべてのものです。

AutoHotkey.exeの名前を変更すると、デフォルトで実行されるスクリプトも変更されます。これは、AutoHotkeyがインストールされていないコンピュータで使用するためにスクリプトをコンパイルする代わりになります。たとえば、MyScript.exeは、ファイル名が指定されなければ自動的にMyScript.ahkを実行するが、他のスクリプトを実行することもできる。

ランチャー

このランチャーは、1つのシステム上でv1とv2のスクリプトを1つのファイル名拡張子で使用できるようにするもので、必ずしもどちらかのバージョンを優先したり、スクリプトの起動方法を変えたりする必要はありません。これは、スクリプトに必要なバージョンの手がかりをチェックし、スクリプトを実行するための適切なexeを見つけることによって行われる。

スクリプトに#Requiresディレクティブが含まれている場合、ランチャーはその要件を満たすexeを探します。そうでなければ、ランチャーはオプションで構文をチェックする。つまり、2つのメジャーバージョンのどちらかでしか有効でないパターンをチェックする。よくあるパターンとしては、以下のようなものがある:

検出は保守的であり、曖昧なケースは通常無視されるべきである。

検出に失敗した場合、デフォルトでは、ユーザーがバージョンを選択するためのメニューが表示されます。このデフォルトは、v1またはv2のいずれかを起動するように変更できる。

既知の制限事項:

注:メインファイルの先頭に#Requiresを付けて必須バージョンを宣言することで、曖昧さをなくすことができる。

起動設定

ランチャーは、ダッシュボードからアクセスできる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.

Run *Launch

インストーラーは "launch"という名前の隠しシェル動詞を登録し、/Launchスイッチでランチャーを実行する。この例に従って活用することができる:

pid := RunWait('*Launch "' PathOfScript '"')

.ahkファイルに対するデフォルトのアクションとは対照的である:

Command-line Usage

ランチャーは、.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 criteria スクリプトの起動に使用する実行ファイルを決定するための追加基準を指定します。例えば、/RunWith UIA
/Which

ランチャーがスクリプトを実行する代わりに、使用するインタープリターを特定し、それを返すようにする。

ランチャーの終了コードは、#Requiresまたはシンタックス(シンタックス検出が有効な場合)で識別される場合はメジャーバージョン番号(1または2)、そうでない場合は0です。

Stdoutは、`nで終端された以下のUTF-8文字列を受け取る:

  • バージョン番号。もし#Requiresが検出された場合、"v"を除いた数字が指定される。それ以外の場合は、終了コードと同じ整数で、バージョンが検出されなかった場合を除き、0であればユーザーにプロンプトが表示されたことを示し、1または2であれば起動設定で設定されたユーザーの優先バージョンを示す。
  • インタープリターEXEが見つかった場合に使用するパス。ユーザーにプロンプトが表示されるか、互換性のあるインタープリターが見つからなかった場合は空白になる。
  • ランチャーが挿入するコマンドライン・スイッチなど/CP65001など)。

今後、追加ラインが返される可能性もある。

Dash

ダッシュは、サポートスクリプトとドキュメントへのアクセスを提供します。インストール後、スタートメニューの「AutoHotkey」ショートカットから開くか、インストールディレクトリからUXui-dash.ahkを直接実行して開くことができます。現在は、以下の項目を含むメニューに過ぎないが、アクティブなスクリプトのコントロールや、その他の便利な機能を提供するために拡張されるかもしれない。

スタート]メニューのショートカットはダッシュを起動しますが、タスクバー(またはWindows 7や10では[スタート]メニュー)に固定されている場合、ジャンプリストには[開く]、[runas]、[UIAccess]シェル動詞で起動された最近のスクリプトが含まれることに注意してください(通常、エクスプローラーのコンテキストメニューまたはファイルをダブルクリックしてアクセスします)。スクリプトは簡単にアクセスできるようにピン留めできます。

新しいスクリプト

新規スクリプトGUIは、ダッシュボタンからアクセスするか、エクスプローラでフォルダ内を右クリックし、新規作成 → AutoHotkeyスクリプトを選択することで表示されます。プリインストールされたテンプレートまたはユーザー定義のテンプレートから新しいスクリプトファイルを作成し、オプションでそれを開いて編集するために使用することができます。

リスト内のテンプレートを右クリックすると、以下のオプションが表示されます:

デフォルトでは、ファイルを作成した後、Ctrlキーを押し続けない限り、GUIは閉じます。

その他の設定は、GUI の左下にある設定ボタンからアクセスできます:

Templates

テンプレートファイルは、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でのインストール

v1とv2を一緒にインストールする方法は2つある:

  1. まずv1をインストールし、次にv2をインストールする。その場合、カレントパスに依存する外部ツールやショートカットが壊れないように、v1ファイルはインストールディレクトリのルートに残される。
  2. 追加バージョンとしてv1をインストールする。v1.1.34.03以降のインストーラーを実行すると、このオプションが表示されます。あるいは、後述の/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をソースディレクトリの代用として、HKLMSoftware\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スイッチを使用すると、警告ダイアログや確認ダイアログが表示されず、インストール完了時にダッシュが表示されなくなります。以下のアクションは、警告なしに自動的に実行されることがあります:

タスクバーボタン

v2インストーラーには、タスクバーボタンを分離するオプションがありません。これまでは、各AutoHotkey実行ファイルをホストアプリとして登録(IsHostApp)することで実現していましたが、この方法には限界があり、複数のバージョンをインストールできるようになると管理しにくくなります。代わりに、各スクリプトは、グループ化を制御するために、そのプロセスまたはウィンドウのAppUserModelIDを設定する必要があります。

UIアクセスで実行

Program Filesの下にインストールする場合、インストーラは、いくつかの一般的なUAC関連の問題を回避するために使用できるAutoHotkey exeファイルの追加セットを作成します。これらのファイルには"_UIA.exe "という接尾辞が付けられます。これらのUIA.exeファイルの1つを管理者が使用してスクリプトを実行すると、スクリプト自体が管理者として実行されることなく、スクリプトは管理者として実行されるプログラムのウィンドウと対話することができます。

インストーラーは以下のことを行う:

ランチャーは、v1スクリプト、v2スクリプト、またはその両方をUIアクセスで実行するよう設定することもできますが、選択したバージョンとビルドのUIA.exeファイルが存在しない場合、このオプションは機能しません。

UIアクセスで他のスクリプトを実行する必要があるスクリプトは、適切なUIA.exeファイルを通常のコマンドラインパラメータ実行するだけです。あるいは、UIAccessシェル動詞が登録されていれば、Run経由で使用することもできます。事例:Run '*UIAccess "Script.ahk"'

既知の制限事項:

詳しくは、アーカイブフォーラムの「管理プログラムとの相互作用を有効にする」をご覧ください。