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.exeの移植性
- ランチャー
- ダッシュ
- 新しいスクリプト
- インストール
スクリプトを作成する
スクリプト ファイルを作成するには、いくつかの一般的な方法があります。
-
メモ帳(またはお好みのテキストエディタ)で、ファイル名の拡張子を .ahk としてファイルを保存します。システムによっては、エディターが別の拡張子(.txtなど)を追加しないように、名前を引用符で囲む必要がある場合があります。
ASCII 以外の文字が含まれる場合は、BOM 付きの UTF-8 としてファイルを保存してください。詳しくはFAQ をご覧ください。}
-
エクスプローラで、スクリプトを保存したいフォルダの空き領域で右クリックし、「新規作成」「AutoHotkey Script」を選択します。次に、スクリプトの名前を入力します(拡張子.ahkが表示されている場合は、消さないように注意してください)。
-
Dashで、[New script]を選択し、スクリプトの名前(拡張子.ahkを除く)を入力して[Create]または[Edit]をクリックします。スクリプトの作成に使用するテンプレートと保存場所は、このウィンドウで設定でき、必要に応じてデフォルトとして設定することもできます。スクリプトの書き方の詳細については、スクリプト言語を参照してください。
スクリプトの書き方については、「スクリプト言語」を参照してください。
スクリプトを編集する
スクリプトを編集用に開くには、スクリプトファイルを右クリックして「スクリプトの編集」を選択します。スクリプトがすでに実行されている場合は、編集機能を使用するか、スクリプトのトレイアイコンを右クリックして[スクリプトの編集]を選択できます。デフォルトのエディタをまだ選択していない場合は、エディタを選択するように促されるはずです。そうでない場合は、DashのEditor settingsでデフォルトのエディタを変更することができます。もちろん、最初にテキストエディタを開いてから、他のテキストファイルと同じようにスクリプトを開くことも可能です。
スクリプトを編集した後、変更を有効にするには、スクリプトを実行するか再読み込みする必要があります。実行中のスクリプトは、通常、トレイメニューから再読み込みできます。
スクリプトを実行する
AutoHotkeyをインストールした状態で、スクリプトを実行するには、いくつかの方法があります。
- エクスプローラでスクリプトファイル(またはスクリプトファイルへのショートカット)をダブルクリックする。
- コマンドラインでAutoHotkey.exeを呼び出し、コマンドラインパラメータとしてスクリプトのファイル名を渡す。
- デフォルトスクリプトを作成したら、スタートメニューのショートカットからAutoHotkeyを起動して実行する。
- Windows 7以降でAutoHotkeyがタスクバーまたはスタートメニューにピン留めされている場合、最近のスクリプトまたはピン留めされているスクリプトは、プログラムのジャンプリストから起動することができます。
ほとんどのスクリプトは、実行中にのみ効果を発揮します。スクリプトを終了するには、トレイメニューまたはExitApp関数を使用します。スクリプトは、Windowsがシャットダウンしたときにも強制的に終了します。ユーザーがログインした後にスクリプトが自動的に起動するように設定するには、スクリプトファイルへのショートカットをスタートアップフォルダに配置するのが最も簡単な方法です。
スクリプトはコンパイルすることもできます。つまり、AutoHotkeyのバイナリファイルと一緒に組み合わせて、自己完結型の実行ファイル(.exe)を形成します。
トレイアイコン
デフォルトでは、各スクリプトはタスクバーの通知領域(一般にトレイと呼ばれる)に独自のアイコンを追加します。
トレイアイコンは通常このように表示されます(ただし、スクリプトが一時停止または中断しているときは色や文字が変わります)。H
トレイアイコンを右クリックすると、トレイメニューが表示され、デフォルトで以下のオプションがあります。
- 開く - スクリプトのメインウィンドウを開きます。
- ヘルプ - AutoHotkey オフライン ヘルプ ファイルを開きます。
- Window Spy - ウィンドウに関するさまざまな情報を表示します。
- スクリプトの再読み込み - 「再読み込み」を参照してください。
- スクリプトを編集する - 編集を参照してください。
- Suspend Hotkeys - ホットキーを一時停止または一時停止解除します。
- Pause Script - スクリプトを一時停止または一時停止解除します。
- Exit - スクリプトを終了します。
デフォルトでは、トレイアイコンをダブルクリックすると、スクリプトのメインウィンドウが表示されます。
トレイアイコンとメニューの動作と外観はカスタマイズ可能です。
- A_TrayMenu は、トレイメニューをカスタマイズするために使用できる Menu オブジェクトを返します。
- A_IconHiddenまたは#NoTrayIconディレクティブを使用して、トレイアイコンを非表示(または表示)することができます。
- A_IconTipは、トレイアイコンに新しいツールチップテキストを割り当てることができます。
- TraySetIcon を使用して、アイコンを変更することができます。
メインウィンドウ
スクリプトのメインウィンドウは通常非表示になっていますが、トレイアイコンや以下に示す機能のいずれかを使って表示することで、スクリプトのデバッグに役立つ情報にアクセスすることができます。表示] メニューの項目は、メインウィンドウの表示内容を制御します。
- 最近実行された行 - ListLines を参照してください。
- 変数とその内容 - ListVarsを参照してください。
- ホットキーとそのメソッド - ListHotkeysを参照してください。
- キー履歴とスクリプト情報 - KeyHistoryを参照してください。
既知の問題:スクリプトがメッセージ ボックスまたはその他のダイアログを表示している間は、メニュー項目のキーボード ショートカットは機能しません。
組み込み変数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ファイル | 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 | 仕様 | 使い方 |
---|---|---|
1 | *#1 | これは、.exeファイルからコンパイルされたスクリプトを 作成するための手段です。このスクリプトは自動的に実行され、 ほとんどのコマンドラインスイッチはプログラムによって解釈されるのではなく、 スクリプトに渡されます。外部スクリプトや代替の埋め込みスクリプトは、 /scriptスイッチを使用することで実行することができます。 |
2 | *#2 | このスクリプトがある場合、 プログラムが読み込むスクリプトの前、 および/includeで指定されたファイルの前に、 自動的に「インクルード」されます。 |
メインスクリプトのソースが埋め込みリソースである場合、プログラムは「コンパイルスクリプト」モードで動作しますが、例外としてA_AhkPathには常に現在の実行ファイルのパスが含まれます(A_ScriptFullPathと同じです)。1以外のリソースについては、#SingleInstanceとReloadをサポートするために、リソース指定子がメインウィンドウのタイトルに含まれます。
埋め込みリソースから来たコードから参照される場合、A_LineFileにはアスタリスク(*)の後にリソース名が含まれます。
コマンドラインの使用法
プログラムの動作に影響を与えるコマンドラインスイッチのリストを含むコマンドラインの使用法については、「スクリプトにコマンドラインパラメータを渡す」を参照してください。
AutoHotkey.exe の移植性
AutoHotkey.exeファイルは、任意の.ahkスクリプトを起動するために必要なすべてのものです。
AutoHotkey.exeの名前を変更すると、デフォルトで実行されるスクリプトも変更され、AutoHotkeyがインストールされていないコンピュータで使用するためにスクリプトをコンパイルする代わりに使用することができます。例えば、MyScript.exeは、ファイル名が提供されない場合、自動的にMyScript.ahkを実行しますが、他のスクリプトを実行することも可能です。
ランチャー
ランチャーは、1つのシステムでv1とv2のスクリプトを1つのファイル名拡張子で使用できるようにするもので、必ずしも1つのバージョンを優先したり、スクリプトを起動するための異なる方法を要求する必要はありません。ランチャーは、スクリプトに必要なバージョンの手がかりをチェックし、スクリプトを実行するための適切なexeを見つけることでこれを実現します。
スクリプトに#Requiresディレクティブが含まれている場合、ランチャーは、その要件を満たすexeを探します。それ以外の場合、ランチャーはオプションで構文をチェックする。つまり、2つのメジャーバージョンのうち1つでしか有効でないパターンをチェックするのです。一般的なパターンとしては、以下のようなものがあります。
- v1: MsgBox、コンマ付き、MsgBox % "no end percent"、Legacy = assignment。
- v1:中括弧や関数定義のない複数行のホットキー。
- #NoEnv、#If(v1)または#HotIf(v2)などの共通ディレクティブ。
- v2: 囲い込みや行末の継続演算子による継続の曖昧さのない使用。
- v2: v2: 式中の「シングルクォート」またはファットアロー => の曖昧な使用。 検出は保守的であり、曖昧なケースは一般的に無視されるべきである。
検出が失敗した場合、デフォルトでは、ユーザーがバージョンを選択するためのメニューが表示されます。このデフォルトは、v1またはv2のいずれかを起動するように変更することができます。
既知の制限
- チェックされるのはメインファイルのみです。
- v1では/****/ のような行を含めることは合法ですが、v2では行末の*/はコメントを閉じるだけなので、このような行があると、スクリプトの大部分が(ランチャーとv1インタープリターの両方によって)無視されることがあります。
- チェックされるのは構文だけで、意味論はチェックされません。例えば、xyz, は v2 では無効であるため、有効な v1 コマンドであると見なされます。xyz 1 は v2 では関数文である可能性がありますが、有効な v1 コマンドであると見なされるため、無視されます。
-
検出されるパターンは、実質的に1つのバージョンの構文エラーであるため、実際の構文エラーや不正に混合された構文を持つスクリプトは、誤認される可能性があります。
注:メインファイルの先頭で#Requiresを使用して必要なバージョンを宣言することで、あいまいさが解消されます。
起動設定
同じバージョン番号を持つ複数のインタープリターが見つかった場合、ランチャーは、あらかじめ決められた、またはユーザーが定義した基準に従って、それらをランク付けすることができます。基準は、カンマで区切られた部分文字列のリストとして表現することができ、それぞれの部分文字列は、一致を否定するために「!」を前置することができる。スコアは、どの部分文字列が一致したかに基づいて計算され、最も左の部分文字列が最も優先される。
ただし、"UIA "は例外で、ファイル名に"_UIA "が含まれていれば一致します。
例えば、_H, 64, !ANSIは、AutoHotkey_Hがあればそれを、システムと互換性があれば64ビットを、そして最後にANSIよりもUnicodeを優先します。
Launcher Settings GUIでは、"Unicode 32-bit "などのオプションがドロップダウンリストに表示されますが、サブストリングのリストは手動で入力することができます。
追加の(優先順位の高い)基準は、/RunWith ランチャースイッチを使用してコマンドラインで指定することができます。
基準は、#Requiresディレクティブを使用してスクリプト内で指定することができ、要件として(ターゲットAutoHotkeyバージョンでサポートされている場合)、または「prefer」で始まりフルストップまたは行末で終わるコメントとしてディレクティブに追加されます。例えば、以下のようになります。
基準
同じバージョン番号を持つ複数のインタープリターが見つかった場合、ランチャーは、事前に定義された、またはユーザー定義の一連の基準に従ってそれらをランク付けできます。条件は、部分文字列のカンマ区切りのリストとして表現できます。各部分文字列の前に「!」を付けることができます。一致を否定します。一致した部分文字列に基づいてスコアが計算され、最も左側の部分文字列が最も優先度が高くなります。
部分文字列は、ファイル名に「_UIA」が含まれている場合に一致する「UIA」を除いて、ファイルの説明で一致します。
たとえば、利用可能な場合は AutoHotkey_H を優先し、システムと互換性がある場合は 64 ビットを優先し、最後に ANSI よりも Unicode を優先します。_H, 64, !ANSI
ランチャー設定 GUI には「Unicode 32 ビット」などのオプションを含むドロップダウン リストが表示されますが、部分文字列のリストは手動で入力できます。
/RunWithランチャー スイッチを使用して、コマンド ラインで追加の (優先度の高い) 条件を指定できます。
#Requiresディレクティブを要件として (ターゲットの AutoHotkey バージョンでサポートされている場合) 使用するか、"prefer" で始まりピリオドまたは行末で終わるコメントとしてディレクティブに追加することにより、スクリプト内で基準を指定できます。. 例えば:
Requires AutoHotkey v1.1.35 ; prefer 64-bit, Unicode. More comments.
実行 *起動
インストーラーは、"launch "という名前の隠しシェル動詞を登録し、/Launchスイッチでランチャーを実行させます。この例に従うことで活用することができます。
pid := RunWait('*Launch "' PathOfScript '"')
.ahkファイルに対するデフォルトの動作とは対照的です。
- 通常、起動したスクリプトの終了コードが返されるのに対し、/Launchでは、新たに起動したスクリプトのプロセスID(PID)が、ランチャーの終了コードとして返されます。RunのOutputVarPIDパラメータは、ランチャーのPIDを返します。
- /スクリプトを起動した後、すぐにランチャーを終了させることができます。Launchを使用しない場合、ランチャーは通常、親プロセスが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の適切なバージョンを使用することができます。
スイッチは、標準的なスイッチと、以下のランチャー専用スイッチのいずれかを混在させることができます。
スイッチ | 意味 |
---|---|
/Launch | バックグラウンドでスクリプトの終了を待つのではなく、 スクリプトの起動直後にランチャーを終了させます。 ランチャーの終了コードは、新しいスクリプト プロセスの プロセス ID (PID) です。 |
/RunWith criteria |
スクリプトの起動に使用する実行可能ファイルを決定するための 追加基準を指定します。たとえば、/RunWith UIA. |
/Which | ランチャーが使用するインタープリターを識別し、 スクリプトを実行する代わりにそれを返すようにします。 #Requires または構文 (構文検出が有効な場合) で識別される場合、 ランチャーの終了コードはメジャー バージョン番号 (1 または 2) であり、それ以外の場合は 0 です。 Stdoutには,`n'で終端された次のようなUTF-8文字列が出力されます. ・バージョン番号。#Requires が検出された場合、これは "v" を除く、指定された任意の番号です。 それ以外の場合は、バージョンが検出されなかった場合を除き、終了コードと同じ整数です。 この場合、これは 0 で、ユーザーにプロンプトが表示されたことを示します。 または、1 または 2 で、構成されているユーザーの優先バージョンを示します。起動設定。 ・インタープリタEXEが見つかった場合に使用されるパスです。 ユーザーにプロンプトが表示されるか、互換性のあるインタープリターが見つからなかった場合は空白になります。 ・ランチャーが挿入する追加のコマンドラインスイッチ(/CP65001など)。 今後、追加の行が返される可能性があります。 |
ダッシュ
ダッシュは、サポートスクリプトとドキュメントへのアクセスを提供します。インストール後にスタートメニューの「AutoHotkey」ショートカットから開くか、インストールディレクトリから直接UXui-dash.ahkを実行することで開くことができます。現在は以下のようなメニューになっていますが、今後、アクティブなスクリプトのコントロールや、便利な機能を拡張していく予定です。
- 新しいスクリプトを作成する。テンプレートから新しいスクリプトを作成します。
- コンパイルします。Ahk2Exeを開くか、自動的にダウンロードとインストールを行います。
- ヘルプファイル(F1)。v1、v2、およびインストールディレクトリにあるその他のCHMファイルのヘルプファイル、オンラインドキュメントを含むメニューを表示します。
- ウィンドウ・スパイ
- 起動の設定です。ランチャーを設定します。
- エディター設定。.ahk ファイルのデフォルトエディターを設定します。
スタートメニューのショートカットでダッシュが起動しますが、タスクバー(Windows 7 または 10 ではスタートメニュー)にピン留めされている場合、ジャンプリストには open、runas または UIAccess シェル動詞で起動した最近のスクリプト(通常はエクスプローラーのコンテキストメニューまたはファイルのダブルクリックでアクセスされる)が含まれることに注意してください。スクリプトは簡単にアクセスできるようにピン留めすることができます。
新しいスクリプト
新規スクリプトGUIは、ダッシュボードから、またはエクスプローラでフォルダ内を右クリックして新規作成 → AutoHotkey Scriptを選択することでアクセスできます。このGUIを使用して、プリインストールまたはユーザー定義のテンプレートから新しいスクリプトファイルを作成し、オプションでそれを開いて編集することができます。
リスト内のテンプレートを右クリックすると、以下のオプションが表示されます。
- テンプレートを編集する。テンプレートの編集:テンプレートをデフォルトのエディターで開きます。プリインストールされているテンプレートの場合、オリジナルを開くのではなく、編集可能なコピーが作成されます。
- テンプレートを隠す。テンプレートを隠す:テンプレート名をGUIに表示されないテンプレートのリストに追加します。テンプレートの非表示を解除するには、HKCU\Software\AutoHotkNew\HideTemplateから対応するレジストリ値を削除します。
- デフォルトとして設定する。デフォルトで選択されるようにテンプレートを設定します。
デフォルトでは、ファイルを作成した後、Ctrlキーを押したままでないとGUIが閉じます。
追加の設定は、GUI左下の設定ボタンからアクセスできます。
- デフォルトでCreateになります。Enterキーを押すと、Createボタンが起動し、スクリプトが作成され、エクスプローラで選択されます。
- デフォルトで編集:Enterを押すと、編集ボタンが起動し、スクリプトが作成され、デフォルトのスクリプトエディタで開かれます。
- 開いたままにする 有効にすると、スクリプトを作成した後にウィンドウが自動的に閉じなくなります。
- フォルダーをデフォルトに設定する。現在のフォルダを、スクリプトを保存するデフォルトの場所として設定します。デフォルトの場所は、[新しいスクリプト]ウィンドウを直接または[ダッシュ]経由で開いた場合に使用され、エクスプローラーのコンテキストメニューから[新しいスクリプト]を起動した場合は使用されません。
- テンプレートフォルダを開く ユーザー定義のテンプレートが保存されているフォルダを開きます。
テンプレート
テンプレートファイルは、UXTemplates(プリインストール)と%A_MyDocuments%AutoHotkeyTemplates(ユーザー)から描かれ、ユーザー定義テンプレートは、同じ名前を持つプリインストールテンプレートを上書きする。%A_WinDir%ShellNewTemplate.ahk にファイルが存在する場合、それは "Legacy" として表示され、その名前のユーザー定義テンプレートで上書きすることができます。
各テンプレートは、以下のようなINIセクションを含むことができる。
/ [NewScriptTemplate] 説明 = 説明文 実行 = true|false|1|0 /
上記のように、INIセクションが/*で始まり、*/で終わる場合、作成されたファイルには含まれません。
Descriptionはオプションです。GUI上ではファイル名の他に表示されます。
Executeはオプションです。trueを指定すると、A_Args[1]に作成するファイルのパス、A_Args[2]にユーザーがクリックしたボタンに応じて「作成」「編集」のいずれかを指定して、テンプレートスクリプトが実行されます。テンプレートスクリプトは、ファイルを作成し、必要に応じて編集用に開くことが期待されます。テンプレートスクリプトが他のファイルを#includeする必要がある場合、テンプレートリストに表示されないように、サブディレクトリに配置することができます。
インストール
このインストーラと関連スクリプトは、複数のバージョンのAutoHotkeyの共存を可能にするために設計されています。ほとんどのことはインストール後に設定できるため、インストーラはほとんどオプションを提供しません。インストール時に選択する必要があるのは、以下の項目のみです。
- インストールする場所。
- インストールする場所。全ユーザーにインストールするか、現在のユーザーにインストールするか。
デフォルトでは、インストーラはすべてのユーザーに対して「%A_ProgramFiles%AutoHotkey」にインストールします。UI Accessオプションでは、Program Filesの下にプログラムをインストールする必要があるため、これを推奨します。インストーラがまだ管理者として実行されていない場合、[インストール]ボタンをクリックすると、ボタン上のシールドアイコンで示されるように、昇格を試みます。
カレントユーザーインストールでは、選択したディレクトリへの書き込み権限がある限り、管理者権限は必要ありません。カレントユーザーインストールのデフォルトのディレクトリは、"%LocalAppData%\Programs\AutoHotkey" です。
v1 でのインストール
v1とv2を一緒にインストールする方法には、2種類あります。
- v1を先にインストールし、その後v2をインストールする。この場合、v1のファイルはインストールディレクトリのルートに残され、現在のパスに依存する外部ツールやショートカットが壊れないようにする。
- 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%"
上記の完全なコマンド文字列は、HKLM\Software\AutoHotkey または HKCU\Software\AutoHotkeyの下にInstallCommandとして登録され、ソースディレクトリの代用として%1が指定されます。このレジストリ値を使用すると、より将来性があります。
現在のインストールを再登録するには
AutoHotkey32.exe UX\install.ahk
現在のインストールを再登録するには:
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が表示されないようにすることができます。以下のアクションは、警告なしに自動的に実行される場合があります。
AutoHotkey*.exeの上書きを許可するためにスクリプトを終了させる。 インストーラによって以前に登録されていないファイル、または登録後に変更されたファイルを上書きする。
タスクバーボタン
v2インストーラでは、タスクバーボタンを分離するオプションが提供されていません。以前は、各AutoHotkey実行ファイルをホストアプリとして登録する(IsHostApp)ことで実現していましたが、この方法には限界があり、複数のバージョンをインストールできるようになると管理しづらくなってしまいます。その代わりに、各スクリプトは、そのプロセスまたはウィンドウのAppUserModelIDを設定して、グループ化を制御する必要があります。。
UIアクセスで実行
Program Filesの下にインストールする場合、インストーラは、いくつかの一般的なUAC関連の問題を回避するために使用できる追加のAutoHotkey exeファイルのセットを作成します。これらのファイルには、"_UIA.exe "という接尾辞が付けられます。これらのUIA.exeファイルの1つを管理者が使用してスクリプトを実行すると、スクリプト自体が管理者として実行されることなく、管理者として実行されるプログラムのウィンドウと対話することができるようになります。
インストーラは次のことを行います。
各AutoHotkey*.exeをAutoHotkey*_UIA.exeにコピーします。 各UIA.exeファイルの埋め込みマニフェストでuiAccess属性を設定します。 AutoHotkey」という名前の自己署名入りデジタル証明書を作成し、各UIA.exeファイルに署名します。 エクスプローラーのコンテキストメニューに「UIアクセスで実行」として表示されるUIAccessシェル動詞を登録します。デフォルトでは、ランチャーが実行され、スクリプトを実行するために適切なUIA.exeファイルを選択しようとします。 ランチャーは、v1スクリプト、v2スクリプト、またはその両方をデフォルトでUIアクセスで実行するように設定することもできますが、選択したバージョンとビルドに対してUIA.exeファイルが存在しない場合、このオプションは何の効果も持ちません。
UIアクセスで他のスクリプトを実行する必要があるスクリプトは、通常のコマンドライン・パラメーターで適切なUIA.exeファイルを実行するだけです。また、UIAccessシェル動詞が登録されている場合は、Runで使用することもできます。たとえば、次のようになります。Run '*UIAccess "Script.ahk"' を実行します。
既知の制限
- UIAは、ファイルが信頼できる場所(Program Filesのサブディレクトリなど)にある場合にのみ有効です。
- あるコンピュータで作成されたUIA.exeファイルは、その署名に使用されたデジタル証明書をインストールしない限り、他のコンピュータで実行できません。
- セキュリティ上の制限により、UIA.exeファイルをCreateProcessで起動することはできません。代わりにShellExecuteを使用することができます。Runはその両方を試します。
- UIA.exeファイルは、ファイルのデジタル署名が無効になるため、変更することはできません。
- UIAプログラムは他のプログラムとは異なる「完全性レベル」で実行されるため、他のUIAプログラムによって登録されたオブジェクトにのみアクセスできます。例えば、ComObjActive("Word.Application")は、WordがUI Accessにマークされていないため、失敗します。
- スクリプト自身のウィンドウは、セキュリティ上の理由から、UIA以外のプログラム/スクリプトによって自動化することができません。
- マウスフック(InstallMouseHookのような単純なものでも可)を使用する非UIAスクリプトを実行すると、UIAスクリプトが所有するウィンドウにマウスが向いているときに、UIAスクリプト自身が実装したホットキーであっても、すべてのマウスホットキーが動作しないことがあります。回避策としては、UIAスクリプトが最後にロードされるようにすることです。
- 新しい親ウィンドウが常に上にあり、子ウィンドウが上にない場合、UIAは既存のウィンドウでGui +Parentオプションが機能しないようにします。 詳しくは、アーカイブフォーラムの「管理プログラムとのインタラクションを有効にする」を参照してください。
https://www.autohotkey.com/docs/v2/Program.htm