</head> <body> <h1>プログラムの使用</h1> <p>AutoHotkeyは単独では何もしません。スクリプトが必要です。スクリプトとは、プログラムの指示を含む拡張子が<code>.ahk</code>のプレーンテキストファイルのことで、コンフィギュレーションファイルのようなものですが、より強力なものです。スクリプトでできることは1つのアクションを実行して終了することだけですが、ほとんどのスクリプトでは、いくつかの<a href="Hotkeys.htm">ホットキー</a>を定義し、各ホットキーの後に、そのホットキーが押されたときに実行される1つまたは複数のアクションを記述します。</p> <pre>#z::Run "https://www.autohotkey.com" <em>; Win+Z</em> ^!n:: <em>; Ctrl+Alt+N</em> { if WinExist("Untitled - Notepad") WinActivate else Run "Notepad" }</pre> <p><strong>ヒント:</strong>ブラウザがサポートしていれば、コードブロックの右上にマウスカーソルを置くと表示される「<span style="font-family: icons;">↓</span>」ボタンをクリックすることで、上記のようなコードブロックをスクリプトファイルとしてダウンロードすることができます。</p> <h2 id="toc">目次</h2> <ul> <li><a href="#create">スクリプトの作成</a></li> <li><a href="#edit">スクリプトの編集</a></li> <li><a href="#run">スクリプトの実行</a></li> <li><a href="#tray-icon">トレイアイコン</a></li> <li><a href="#main-window">メインウィンドウ</a></li> <li><a href="#embedded-scripts">組み込みスクリプト</a></li> <li><a href="#cmd">コマンドラインの使用法</a></li> <li><a href="#portability">AutoHotkey.exeの移植性</a></li> <li><a href="#launcher">ランチャー</a></li> <li><a href="#dash">Dash</a></li> <li><a href="#newscript">新しいスクリプト</a></li> <li><a href="#install">インストール</a> <ul> <li><a href="#Installer_uiAccess">UIアクセスで実行</a></li> </ul></li> </ul> <h2 id="create">スクリプトの作成</h2> <p>スクリプト・ファイルを作成する一般的な方法はいくつかあります:</p> <ul> <li>メモ帳(またはお好みの<a href="misc/Editors.htm">テキストエディタ</a>)で、拡張子<code>.ahk</code>のファイルを保存します。システムによっては、エディタが別の拡張子(.txtなど)を追加しないように、名前を引用符で囲む必要があるかもしれません。 <p class="note">ASCII以外の文字が含まれる場合は、必ずBOM付きのUTF-8として保存してください。詳細は<a href="FAQ.htm#nonascii">FAQ</a>を参照。</p></li> <li>エクスプローラで、スクリプトを保存するフォルダの何もない場所で右クリックし、[<strong>新規</strong>作成]から[<strong>AutoHotkeyスクリプト</strong>]を選択します。次に、スクリプトの名前を入力します(拡張子<code>.ahk</code>が表示されている場合は、消さないように注意してください)。</li> <li><a href="#dash">Dash</a>で[<a href="#newscript">新規スクリプト</a>]を選択し、スクリプトの名前(拡張子<code>.ahk</code>を除く)を入力して、[<em>作成</em>]または[<em>編集</em>]をクリックします。スクリプトの作成に使用するテンプレートと保存場所は、このウィンドウで設定でき、必要に応じてデフォルトに設定することもできます。</li> </ul> <p class="note">スクリプトの書き方については<a href="Language.htm">スクリプト言語</a>を参照してください。</p> <h2 id="edit">スクリプトの編集</h2> <p>スクリプトを開いて編集するには、スクリプト ファイルを右クリックし、[<strong>スクリプトの編集</strong>]を選択します。スクリプトがすでに実行されている場合は、[<a href="lib/Edit.htm">編集</a>]機能を使用するか、スクリプトの<a href="#tray-icon">トレイ アイコン</a>を右クリックして[<strong>スクリプトの編集</strong>]を選択します。まだデフォルトのエディタを選択していない場合は、エディタを選択するプロンプトが表示されます。そうでない場合は、<a href="#dash">Dash</a>の<em>エディター</em>設定でデフォルトのエディターを変更できます。もちろん、最初にテキストエディタを開き、他のテキストファイルと同じようにスクリプトを開くこともできます。</p> <p>スクリプトを編集した後、変更を有効にするには、スクリプトを実行するか<a href="lib/Reload.htm">再読み込み</a>する必要があります。実行中のスクリプトは通常、<a href="#tray-icon">トレイメニュー</a>からリロードできます。</p> <h2 id="run">スクリプトの実行</h2> <p>AutoHotkeyをインストールすると、スクリプトを実行する方法がいくつかあります:</p> <ul> <li>エクスプローラでスクリプトファイル(またはスクリプトファイルへのショートカット)をダブルクリックします。</li> <li>コマンドラインでAutoHotkey.exeを呼び出し、スクリプトのファイル名を<a href="Scripts.htm#cmd">コマンドラインパラメータとして</a>渡します。</li> <li><a href="Scripts.htm#defaultfile">デフォルトのスクリプト</a>を作成したら、スタートメニューのショートカットからAutoHotkeyを起動して実行します。</li> <li>Windows 7以降でAutoHotkeyがタスクバーまたはスタートメニューにピン留めされている場合、プログラムのジャンプリストから最近のスクリプトまたはピン留めされたスクリプトを起動できます。</li> </ul> <p>ほとんどのスクリプトは、実行中にのみ効果を発揮する。スクリプトを終了するには、<a href="#tray-icon">トレイメニュー</a>または<a href="lib/ExitApp.htm">ExitApp</a>関数を使用します。Windowsがシャットダウンすると、スクリプトも強制終了する。ユーザーがログインした後にスクリプトが自動的に開始するように設定す るには、スクリプト ファイルへのショートカットを<a href="Variables.htm#Startup">スタートアップ</a>フォルダに置くのが最も簡単な方法です。</p> <p>スクリプトは<a href="Scripts.htm#ahk2exe">コンパイルする</a>こともできます。つまり、AutoHotkeyのバイナリファイルと組み合わせて、自己完結型の実行ファイル(.exe)を作成します。</p> <h2 id="tray-icon">トレイアイコン</h2> <p>デフォルトでは、各スクリプトはタスクバーの通知領域(一般にトレイと呼ばれる)に独自のアイコンを追加します。</p> <p>トレイアイコンは通常このようになっている:</p> <style> .img_center img { display: block; margin-right: .2em; } </style> <table style="margin-left: 1em;"> <tr> <td class="img_center"><img src="static/ahk16.png" alt="緑のHアイコン"></td> <td>デフォルトのトレイアイコン。</td> </tr> <tr> <td class="img_center"><img src="static/ahk16_pause.png" alt="緑のアイコンに一時停止マーク"></td> <td>スクリプトは<a href="lib/Pause.htm">一時停止</a>される。</td> </tr> <tr> <td class="img_center"><img src="static/ahk16_suspend.png" alt="緑色のアイコンに透明なH"></td> <td>脚本は<a href="lib/Suspend.htm">中断</a>されている。</td> </tr> <tr> <td class="img_center"><img src="static/ahk16_pause_suspend.png" alt="緑色のアイコンに透明な一時停止マーク"></td> <td>スクリプトは<a href="lib/Pause.htm">一時停止</a>され、<a href="lib/Suspend.htm">中断</a>される。</td> </tr> </table> <p>トレイアイコンを右クリックするとトレイメニューが表示され、デフォルトでは以下のオプションがあります:</p> <ul> <li>開く - スクリプトの<a href="#main-window">メインウィンドウ</a>を開きます。</li> <li>ヘルプ - AutoHotkeyオフラインヘルプファイルを開きます。</li> <li>Window Spy - ウィンドウに関する様々な情報を表示します。</li> <li>Reload Script -<a href="lib/Reload.htm">リロード</a>を参照。</li> <li>スクリプトの編集 -<a href="lib/Edit.htm">編集</a>を参照。</li> <li>Suspend Hotkeys(ホットキーのサスペンド) - ホットキーを<a href="lib/Suspend.htm">サスペンド</a>またはサスペンド解除します。</li> <li>スクリプトの一時停止 - スクリプトを<a href="lib/Pause.htm">一時停止</a>または一時停止解除します。</li> <li>Exit - スクリプトを終了します。</li> </ul> <p>デフォルトでは、トレイアイコンをダブルクリックすると、スクリプトの<a href="#main-window">メインウィンドウ</a>が表示されます。</p> <p>トレイアイコンとメニューの動作と外観はカスタマイズできる:</p> <ul> <li><a href="Variables.htm#TrayMenu">A_TrayMenu</a>は、トレイメニューをカスタマイズするために使用できる<a href="lib/Menu.htm">Menu オブジェクト</a>を返します。</li> <li><a href="Variables.htm#IconHidden">A_IconHidden</a>または<a href="lib/_NoTrayIcon.htm">#NoTrayIcon</a>ディレクティブを使用すると、トレイアイコンを隠す(または表示する)ことができます。</li> <li><a href="Variables.htm#IconTip">A_IconTip</a>は、トレイアイコンの新しいツールチップテキストを割り当てることができます。</li> <li><a href="lib/TraySetIcon.htm">TraySetIcon</a>は、アイコンを変更するために使用することができます。</li> </ul> <h2 id="main-window">メインウィンドウ</h2> <p>スクリプトのメインウィンドウは通常非表示になっていますが、<a href="#tray-icon">トレイアイコン</a>または以下に示す関数のいずれかを使用して表示すると、スクリプトのデバッグに役立つ情報にアクセスできます。<strong>表示</strong>メニューの項目は、メインウィンドウの表示を制御します:</p> <ul> <li>最近実行された行 -<a href="lib/ListLines.htm">ListLines</a>を参照。</li> <li>変数とその内容 -<a href="lib/ListVars.htm">ListVars</a>を参照。</li> <li>ホットキーとそのメソッド -<a href="lib/ListHotkeys.htm">ListHotkeys</a>を参照してください。</li> <li>キーの履歴とスクリプト情報 -<a href="lib/KeyHistory.htm">KeyHistory</a>を参照。</li> </ul> <p><strong>既知の問題:</strong>スクリプトが<a href="lib/MsgBox.htm">メッセージボックス</a>やその他のダイアログを表示している間、メニュー項目のキーボードショートカットが機能しない。</p> <p>組み込み変数<a href="Variables.htm#ScriptHwnd">A_ScriptHwnd</a>には、スクリプトのメインウィンドウの一意なID(HWND)が格納される。</p> <p><a href="lib/WinClose.htm">WinClose</a>でこのウィンドウを閉じると(他のスクリプトからでも)スクリプトが終了しますが、他のほとんどの方法ではウィンドウが非表示になるだけで、スクリプトは実行されたままになります。</p> <p>メインウィンドウを最小化すると、自動的に非表示になる。これは、所有するウィンドウ(GUIウィンドウや特定のダイアログウィンドウなど)が自動的に最小化されるのを防ぐために行われるが、メインウィンドウのタスクバーボタンを隠す効果もある。代わりにメイン・ウィンドウを普通に最小化できるようにするには、<a href="lib/OnMessage.htm">OnMessage</a>でデフォルトの処理をオーバーライドする。事例:</p> <pre>; This prevents the main window from hiding on minimize: OnMessage 0x0112, PreventAutoMinimize <em>; WM_SYSCOMMAND = 0x0112</em> OnMessage 0x0005, PreventAutoMinimize <em>; WM_SIZE = 0x0005 ; This prevents owned GUI windows (but not dialogs) from automatically minimizing:</em> OnMessage 0x0018, PreventAutoMinimize Persistent PreventAutoMinimize(wParam, lParam, uMsg, hwnd) { if (uMsg = 0x0112 &amp;&amp; wParam = 0xF020 &amp;&amp; hwnd = A_ScriptHwnd) { <em>; SC_MINIMIZE = 0xF020</em> WinMinimize return 0 <em>; Prevent main window from hiding.</em> } if (uMsg = 0x0005 &amp;&amp; wParam = 1 &amp;&amp; hwnd = A_ScriptHwnd) <em>; SIZE_MINIMIZED = 1</em> return 0 <em>; Prevent main window from hiding.</em> if (uMsg = 0x0018 &amp;&amp; lParam = 1) <em>; SW_PARENTCLOSING = 1</em> return 0 <em>; Prevent owned window from minimizing.</em> }</pre> <h3 id="title">Main Window Title</h3> <p>スクリプトのメインウィンドウのタイトルは、<a href="lib/_SingleInstance.htm">#SingleInstance</a>および<a href="lib/Reload.htm">Reload</a>メカニズムによって、同じスクリプトの他のインスタンスを識別するために使用されます。<a href="lib/WinSetTitle.htm">タイトルを変更する</a>ことで、脚本がそのように特定されるのを防ぐことができる。デフォルトのタイトルは、スクリプトのロード方法によって異なります:</p> <table class="info"> <tr><th>ロード元</th><th>タイトル表現</th><th>例</th></tr> <tr><td>.ahk file</td><td><code>A_ScriptFullPath " - AutoHotkey v" A_AhkVersion</code></td><td>E:\My Script.ahk - AutoHotkey v1.1.33.09</td></tr> <tr><td>メインリソース(コンパイル済みスクリプト)</td><td><code>A_ScriptFullPath</code></td><td>E:\My Script.exe</td></tr> <tr><td>その他のリソース</td><td><code>A_ScriptFullPath " - " A_LineFile</code></td><td>E:\My AutoHotkey.exe - *BUILTIN-TOOL.AHK</td></tr> </table> <p>次のコードは、デフォルトのタイトルをスクリプト自身で決定する方法を示している(ただし、実際のタイトルは<a href="lib/WinGetTitle.htm">WinGetTitle</a>で取得できる):</p> <pre> title := A_ScriptFullPath if !A_IsCompiled title .= " - AutoHotkey v" A_AhkVersion <em>; 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):</em> else if SubStr(A_LineFile, 1, 1) = "*" &amp;&amp; A_LineFile != "*#1" title .= " - " A_LineFile </pre> <h2 id="embedded-scripts">組み込みスクリプト</h2> <p>スクリプトは、<a href="Scripts.htm#ahk2exe">Ahk2Exeコンパイラ</a>を使用してWin32(RCDATA)リソースとして追加することで、標準のAutoHotkey .exeファイルに埋め込むことができます。スクリプトを追加するには、<a href="misc/Ahk2ExeDirectives.htm#AddResource">AddResource</a>コンパイラー指令を参照してください。</p> <p>埋め込みスクリプトは、アスタリスク(*)の後にリソース名を書くことで、コマンドラインまたは<a href="lib/_Include.htm">#Include</a>で指定できます。整数IDの場合、リソース名はハッシュ記号(#)の後に10進数を続けなければならない。</p> <p>ファイル内にスクリプトコードが存在する場合、プログラムは自動的に以下のリソースからスクリプトコードをロードすることができる:</p> <table class="info"> <tr><th>ID</th><th>Spec</th><th>使用方法</th></tr> <tr> <td>1</td><td>*#1</td> <td>これは、.exeファイルから<a href="Scripts.htm#ahk2exe">コンパイルされたスクリプト</a>を作成する手段である。このスクリプトは自動的に実行され、ほとんどのコマンドラインスイッチはプログラムによって解釈されるのではなく、スクリプトに渡される。外部スクリプトおよび代替埋め込みスクリプトは、<a href="Scripts.htm#SlashScript">/script</a>スイッチを使用して実行することができます。</td> </tr> <tr> <td>2</td><td>*#2</td> <td>このスクリプトがある場合、プログラムがロードするスクリプトの前、および<a href="Scripts.htm#SlashInclude">/include</a>で指定されたファイルの前に、このスクリプトが自動的に「インクルード」される。</td> </tr> </table> <p>メイン・スクリプトのソースが埋め込みリソースである場合、プログラムは「コンパイル済みスクリプト」モードで動作するが、例外として<a href="Variables.htm#AhkPath">A_AhkPath</a>には常に現在の実行可能ファイルのパスが含まれる(<a href="Variables.htm#ScriptFullPath">A_ScriptFullPath</a>と同じ)。*#1以外のリソースについては、<a href="lib/_SingleInstance.htm">#SingleInstance</a>と <a href="lib/Reload.htm">Reload</a>をサポートするために、リソース指定子が<a href="#title">メインウィンドウのタイトル</a>に含まれる。</p> <p>埋め込まれたリソースから来たコードから参照される場合、<a href="Variables.htm#LineFile">A_LineFile</a>にはアスタリスク(*)の後にリソース名が付きます。</p> <h2 id="cmd">コマンドラインの使用法</h2> <p>プログラムの動作に影響を与えるコマンド・ライン・スイッチのリストを含むコマンド・ラインの使用法については、<a href="Scripts.htm#cmd">スクリプトにコマンド・ライン・パラメータを渡す</a>を参照してください。</p> <h2 id="portability">AutoHotkey.exeの移植性</h2> <p>AutoHotkey.exeファイルは、すべての.ahkスクリプトを起動するために必要なすべてのものです。</p> <p>AutoHotkey.exeの名前を変更すると、<a href="Scripts.htm#defaultfile">デフォルト</a>で実行されるスクリプトも変更されます。これは、AutoHotkeyがインストールされていないコンピュータで使用するためにスクリプトをコンパイルする代わりになります。たとえば、<i>MyScript</i>.exeは、ファイル名が指定されなければ自動的に<i>MyScript</i>.ahkを実行するが、他のスクリプトを実行することもできる。</p> <h2 id="launcher">ランチャー</h2> <p>このランチャーは、1つのシステム上でv1とv2のスクリプトを1つのファイル名拡張子で使用できるようにするもので、必ずしもどちらかのバージョンを優先したり、スクリプトの起動方法を変えたりする必要はありません。これは、スクリプトに必要なバージョンの手がかりをチェックし、スクリプトを実行するための適切なexeを見つけることによって行われる。</p> <p>スクリプトに<a href="lib/_Requires.htm">#Requires</a>ディレクティブが含まれている場合、ランチャーはその要件を満たすexeを探します。そうでなければ、ランチャーはオプションで構文をチェックする。つまり、2つのメジャーバージョンのどちらかでしか有効でないパターンをチェックする。よくあるパターンとしては、以下のようなものがある:</p> <ul> <li>v1:<code class="no-highlight">MsgBox, カンマ付き</code>、<code class="no-highlight">MsgBox % "ノーエンドパーセント"</code>、<code class="no-highlight">レガシー = 割り当て</code>。</li> <li>v1:中括弧や関数定義のない複数行のホットキー。</li> <li>NoEnvや#If(v1)、<a href="lib/_HotIf.htm">#HotIf</a>(v2)などの一般的なディレクティブ。</li> <li>v2:<a href="Scripts.htm#continuation-expr">囲み</a>または<a href="Scripts.htm#continuation-line">行末の継続演算子</a>による<a href="Scripts.htm#continuation-expr">継続</a>の明確な使用。</li> <li>v2:式の中で<code>'一重引用符'</code>または<a href="Variables.htm#fat-arrow">太い矢印<code>=&gt;</code></a>を明確に使用する。</li> </ul> <p>検出は保守的であり、曖昧なケースは通常無視されるべきである。</p> <p>検出に失敗した場合、デフォルトでは、ユーザーがバージョンを選択するためのメニューが表示されます。このデフォルトは、v1またはv2のいずれかを起動するように変更できる。</p> <p><strong>既知の制限事項:</strong></p> <ul> <li>チェックされるのはメインファイルのみ。</li> <li>v1では<code>/****/</code>のような行を含めることは合法だが、v2では行末の<code>*/</code>はコメントを閉じるだけなので、このような行があるとスクリプトの大部分が(ランチャーとv1インタープリターの両方によって)無視される可能性がある。</li> <li>チェックされるのはシンタックスだけで、セマンティクスはチェックされない。例えば、<code>xyz,</code>はv2では無効なので、v1では有効なコマンドとみなされる。<code>xyz 1</code>は、v2ではファンクション・ステートメントになり得るが、v1でも有効なコマンドであると見なされるため、無視される。</li> <li>検出されるパターンは、実質的に1つのバージョンにおける構文エラーであるため、実際の構文エラーや正しくない構文が混在するスクリプトは、誤認識される可能性がある。</li> </ul> <p class="note"><strong>注:</strong>メインファイルの先頭に<a href="lib/_Requires.htm">#Requires</a>を付けて必須バージョンを宣言することで、曖昧さをなくすことができる。</p> <h3 id="launcher-config">起動設定</h3> <p>ランチャーは、<a href="#dash">Dashボード</a>からアクセスできるLaunch Settings GUIで有効化、無効化、設定することができます。</p> <p><em>すべてのスクリプトを特定のインタープリターで実行</em>する ランチャーを無効にし、従来の方法で、すべてのスクリプトを実行するために使用するexeを選択できるようにします。v1 exeを選択すると、スタートメニューの "AutoHotkey"ショートカットを使用する以外、サポートスクリプトを実行することが難しくなりますのでご注意ください。</p> <p><em>スクリプト起動時にバージョンを自動検出</em>することで、ランチャーが有効になります。追加の設定は、ランチャーがどのインタープリターを使用するかを選択する方法を制御します。</p> <h3 id="launcher-criteria">基準</h3> <p>同じバージョン番号の複数のインタープリターが見つかった場合、ランチャーはあらかじめ設定された、またはユーザーが定義した基準に従って、それらのインタープリターをランク付けすることができます。基準は、カンマで区切られた部分文字列のリストとして表すことができ、それぞれの部分文字列の前に"!"を付けて、マッチを否定することもできる。どの部分文字列がマッチしたかに基づいてスコアが計算され、左端の部分文字列が最も優先される。</p> <p>ただし、"UIA"は例外で、ファイル名に"_UIA"が含まれる場合にマッチする。</p> <p>例えば、<code>_H, 64, !ANSI</code>は、AutoHotkey_Hがあればそれを選び、システムと互換性があれば64ビットを選び、最後にANSIよりもUnicodeを選びます。</p> <p>Launcher Settings GUIでは、"Unicode 32-bit "などのオプションがドロップダウンリストに表示されますが、部分文字列のリストは手動で入力することができます。</p> <p>追加の(優先順位の高い)条件は、<a href="#SlashRunWith">/RunWith</a>launcherスイッチを使ってコマンドラインで指定できる。</p> <p>スクリプト内で<a href="lib/_Requires.htm">#Requires</a>ディレクティブを使用することで、条件を指定することができます(対象のAutoHotkeyバージョンでサポートされている場合)。事例:</p> <pre>#Requires AutoHotkey v1.1.35 <em>; prefer 64-bit, Unicode. More comments.</em></pre> <h3 id="launcher-run">Run *Launch</h3> <p>インストーラーは "launch"という名前の隠しシェル動詞を登録し、<a href="#SlashLaunch">/Launch</a>スイッチでランチャーを実行する。この例に従って活用することができる:</p> <pre>pid := RunWait('*Launch "' PathOfScript '"')</pre> <p>.ahkファイルに対するデフォルトのアクションとは対照的である:</p> <ul> <li>通常は起動したスクリプトの終了コードを返しますが、/Launchでは、新しく起動したスクリプトのプロセスID(PID)がランチャーの終了コードとして返されます。Runの<em>OutputVarPID</em>パラメータは、ランチャーのPIDを返す。</li> <li>/Launch は、スクリプトを起動すると、ランチャーを直ちに終了させます。/Launch が使用されていない場合、ランチャーは通常、親プロセスが<code>RunWait(PathOfScript)</code>のようなことを行っているかもしれないと仮定しなければなりません。</li> </ul> <h3 id="launcher-cmd">コマンドラインの使用法</h3> <p>ランチャーは、.ahkファイルがデフォルトでランチャーを使用するように設定されていない場合や、ランチャーの動作をより細かく制御したい場合に、コマンドラインで明示的に実行することができる。ランチャーがコンパイルされている場合、追加のランチャースイッチを除いて、その使用方法は基本的にAutoHotkey.exeと同じです。それ以外の場合、コマンドラインでの使用形式は以下の通り:</p> <pre>AutoHotkeyUX.exe launcher.ahk [<i>Switches</i>] [<i>Script Filename</i>] [<i>Script Parameters</i>]</pre> <p>通常、AutoHotkeyインストレーションのUXサブディレクトリにあるAutoHotkeyUX.exeとlauncher.ahkへのパスには、フルパスと引用符を使用します。AutoHotkeyUX.exe(単なるコピーです)の代わりに、AutoHotkey32.exeまたはAutoHotkey64.exeの適切なバージョンを使用できます。</p> <p><em>スイッチ</em>には、<a href="Scripts.htm#cmd">標準的なスイッチ</a>と以下のランチャー専用スイッチを混在させることができる:</p> <table class="info"> <tr><th>Switch</th><th>意味</th></tr> <tr id="SlashLaunch"> <td>/Launch</td> <td>スクリプトの終了をバックグラウンドで待つのではなく、スクリプトを起動した直後にランチャーを終了させる。ランチャーの終了コードは、新しいスクリプト・プロセスのプロセスID(PID)である。</td> </tr> <tr id="SlashRunWith"> <td>/RunWith <em>基準</em></td> <td>スクリプトの起動に使用する実行ファイルを決定するための追加<a href="#launcher-criteria">基準</a>を指定します。例えば、<code>/RunWith UIA</code>。</td> </tr> <tr id="SlashWhich"> <td>/Which</td> <td> <p>ランチャーがスクリプトを実行する代わりに、使用するインタープリターを特定し、それを返すようにする。</p> <p>ランチャーの終了コードは、#Requiresまたはシンタックス(シンタックス検出が有効な場合)で識別される場合はメジャーバージョン番号(1または2)、そうでない場合は0です。</p> <p>Stdoutは、<code>`n</code>で終端された以下のUTF-8文字列を受け取る:</p> <ul> <li>バージョン番号。もし#Requiresが検出された場合、"v"を除いた数字が指定される。それ以外の場合は、終了コードと同じ整数で、バージョンが検出されなかった場合を除き、0であればユーザーにプロンプトが表示されたことを示し、1または2であれば起動設定で設定されたユーザーの優先バージョンを示す。</li> <li>インタープリターEXEが見つかった場合に使用するパス。ユーザーにプロンプトが表示されるか、互換性のあるインタープリターが見つからなかった場合は空白になる。</li> <li>ランチャーが挿入するコマンドライン・スイッチなど<code>/CP65001</code>など)。</li> </ul> <p>今後、追加ラインが返される可能性もある。</p> </td> </tr> </table> <h2 id="dash">Dash</h2> <p>Dashは、サポートスクリプトとドキュメントへのアクセスを提供します。インストール後、スタートメニューの「AutoHotkey」ショートカットから開くか、インストールディレクトリからUXui-dash.ahkを直接実行して開くことができます。現在は、以下の項目を含むメニューに過ぎないが、アクティブなスクリプトのコントロールや、その他の便利な機能を提供するために拡張されるかもしれない。</p> <ul> <li>New script:テンプレートから新しいスクリプトを作成する。</li> <li>Compile:Ahk2Exeを開くか、自動的にダウンロードしてインストールします。</li> <li>Help files (F1):v1とv2のヘルプファイルとオンライン・ドキュメント、およびインストール・ディレクトリにあるその他のCHMファイルを含むメニューを表示します。</li> <li>Window spy</li> <li>Launch settings:ランチャーを設定する。</li> <li>Editor settings:.ahkファイルのデフォルトエディタを設定します。</li> </ul> <p>スタート]メニューのショートカットはDashを起動しますが、タスクバー(またはWindows 7や10では[スタート]メニュー)に固定されている場合、ジャンプリストには[<em>開く]</em>、[<em>runas</em>]、[<em>UIAccess</em>]シェル動詞で起動された最近のスクリプトが含まれることに注意してください(通常、エクスプローラーのコンテキストメニューまたはファイルをダブルクリックしてアクセスします)。スクリプトは簡単にアクセスできるようにピン留めできます。</p> <h2 id="newscript">新しいスクリプト</h2> <p>新規スクリプトGUIは、Dashボタンからアクセスするか、エクスプローラでフォルダ内を右クリックし、新規作成 → AutoHotkeyスクリプトを選択することで表示されます。プリインストールされたテンプレートまたはユーザー定義のテンプレートから新しいスクリプトファイルを作成し、オプションでそれを開いて編集するために使用することができます。</p> <p>リスト内のテンプレートを右クリックすると、以下のオプションが表示されます:</p> <ul> <li>Edit template:デフォルトのエディタでテンプレートを開く。プリインストールされているテンプレートの場合、オリジナルを開く代わりに編集可能なコピーが作成されます。</li> <li>Hide template:GUIに表示されないテンプレートのリストにテンプレート名を追加します。テンプレートの非表示を解除するには、<code>HKCU\Software\AutoHotkey\New\HideTemplate</code>から対応するレジストリ値を削除する。</li> <li>Set as default:デフォルトで選択されるテンプレートを設定します。</li> </ul> <p>デフォルトでは、ファイルを作成した後、Ctrlキーを押し続けない限り、GUIは閉じます。</p> <p>その他の設定は、GUI の左下にある設定ボタンからアクセスできます:</p> <ul> <li>Default to Create:Enterを押すとCreateボタンがアクティブになり、スクリプトが作成されてエクスプローラで選択されます。</li> <li>Default to Edit:Enterを押すとEditボタンが有効になり、スクリプトが作成されてデフォルトのスクリプトエディタで開きます。</li> <li>Stay open:有効にすると、スクリプト作成後にウィンドウが自動的に閉じなくなる。</li> <li>Set folder as default:スクリプトを保存するデフォルトの場所として、現在のフォルダを設定します。デフォルトの場所は、新しいスクリプト ウィンドウを直接開くか、Dashを使用して開く場合に使用されます。エクスプローラのコンテキスト メニューから新しいスクリプトを起動した場合は使用されません。</li> <li>Open templates folder:ユーザー定義<a href="#templates">テンプレート</a>を保存できるフォルダを開きます。</li> </ul> <h3 id="templates">Templates</h3> <p>テンプレートファイルは、UX\Templates(プリインストール)と<em>%A_MyDocuments%</em>\AutoHotkey\Templates(ユーザー)から引かれ、ユーザー定義のテンプレートは、同じ名前を持つプリインストールされたテンプレートを上書きします。ファイルが<em>%A_WinDir%</em>\ShellNew\Template.ahkに存在する場合、それは「Legacy」として表示され、その名前のユーザー定義テンプレートで上書きすることができる。</p> <p>各テンプレートは、以下のようなINIセクションを含むことができる:</p> <pre>/* [NewScriptTemplate] Description = Descriptive text Execute = true|false|1|0 */</pre> <p>上記のように、INIセクションが<code>/*</code>で始まり、<code>*/</code>で終わる場合、作成されたファイルには含まれない。</p> <p><strong>Description</strong>は任意である。GUIでは、ファイル名の他にこの文字も表示される。</p> <p><strong>Execute</strong> は任意である。trueに設定された場合、テンプレートスクリプトが実行され、<code>A_Args[1]</code>には作成されるファイルのパスが、<code>A_Args[2]</code>にはユーザーがクリックしたボタンに応じて "Create"または "Edit"が格納されます。テンプレート・スクリプトは、ファイルを作成し、該当する場合は編集用に開くことが期待される。テンプレートスクリプトが他のファイルを<code>#include</code>する必要がある場合、それらをサブディレクトリに置くことで、テンプレートリストに表示されないようにすることができる。</p> <h2 id="install">インストール</h2> <p>このインストーラと関連スクリプトは、複数のバージョンのAutoHotkeyが共存できるように設計されています。ほとんどのことはインストール後に設定できるため、インストーラーが提供するオプションはほとんどない。インストール時には、以下の選択のみを行う必要があります:</p> <ul> <li>設置場所。</li> <li>すべてのユーザーにインストールするか、現在のユーザーにインストールするか。</li> </ul> <p>デフォルトでは、インストーラーは全ユーザーの「%A_ProgramFiles%\AutoHotkey」にインストールします。UI Accessオプションでは、プログラムをProgram Filesの下にインストールする必要があるため、これをお勧めします。インストーラがまだ管理者として実行されていない場合、インストールボタンがクリックされると、ボタン上のシールドアイコンで示されるように、昇格を試みます。</p> <p>現在のユーザーによるインストールでは、ユーザーが選択したディレクトリへの書き込み権限を持っている限り、管理者権限は必要ありません。カレントユーザインストールのデフォルトディレクトリは、「%LocalAppData%\Programs\AutoHotkey」です。</p> <h3 id="install_v1">v1でのインストール</h3> <p>v1とv2を一緒にインストールする方法は2つある:</p> <ol> <li>まずv1をインストールし、次にv2をインストールする。その場合、カレントパスに依存する外部ツールやショートカットが壊れないように、v1ファイルはインストールディレクトリのルートに残される。</li> <li>追加バージョンとしてv1をインストールする。v1.1.34.03以降のインストーラーを実行すると、このオプションが表示されます。あるいは、後述の<code>/install</code>スイッチを使う。各バージョンはそれぞれのサブディレクトリにインストールされる。</li> </ol> <p>v1.1.34.02以前のインストーラ(またはv1.1.34.03以降のカスタムインストール)を実行すると、バージョン番号、アンインストーラエントリ、ファイルタイプ登録の一部など、v2インストーラによってレジストリに設定された値の一部が上書きされます。v1のアンインストーラーも登録されますが、これは両方のバージョンを正しくアンインストールすることができません。v2を再登録するには、任意のv2インストーラを再実行するか、AutoHotkey32.exeまたはAutoHotkey64.exeを使用してUXinstall.ahkを実行します。</p> <h3 id="installdef">デフォルト・バージョン</h3> <p>v1のインストールとは異なり、インストール時にデフォルトのバージョンは選択されません。デフォルトはランチャーによってより動的に処理され、ユーザーごとに設定できる。</p> <h3 id="installcmd">コマンドラインの使用法</h3> <p><em>DESTINATION</em>ディレクトリーに直接インストールするには、ソース・ディレクトリー内から、以下のように<code>/installto</code>または<code>/to</code>(2つのスイッチは交換可能)を使用する。ダウンロードしたsetup.exeか、ダウンロードしたzipなどから展開したファイルを使用する。</p> <pre>AutoHotkey_setup.exe /installto "%DESTINATION%"</pre> <pre>AutoHotkey32.exe UX\install.ahk /to "%DESTINATION%"</pre> <p><em>SOURCE</em>(AutoHotkey*.exeファイルを含むディレクトリ)から追加バージョンをインストールするには、現在のインストールディレクトリ内で以下を実行します(必要に応じてAutoHotkey32.exeのパスを調整します):</p> <pre>AutoHotkey32.exe UX\install.ahk /install "%SOURCE%"</pre> <p>上記の完全なコマンド文字列は、<code class="no-highlight">%1</code>をソースディレクトリの代用として、<code>HKLM\Software\AutoHotkey</code>または<code>HKCU\Software\AutoHotkey</code>の下で<em>InstallCommand</em>として登録される。このレジストリ値を使用する方が、将来的により安全かもしれない。</p> <p>現在のインストールを再登録する:</p> <pre>AutoHotkey32.exe UX\install.ahk</pre> <p>アンインストールする:</p> <pre>AutoHotkey32.exe UX\install.ahk /uninstall</pre> <p>または、以下のレジストリキーのいずれかから<em>QuietUninstallString</em>の値を読み取り、実行する:</p> <pre>HKLM\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey HKCU\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey</pre> <p><code>/silent</code>スイッチを使用すると、警告ダイアログや確認ダイアログが表示されず、インストール完了時に<a href="#dash">Dash</a>が表示されなくなります。以下のアクションは、警告なしに自動的に実行されることがあります:</p> <ul> <li>AutoHotkey*.exeが上書きされるようにスクリプトを終了します。</li> <li>インストーラによって以前に登録されていないか、登録後に変更されたファイルを上書きする。</li> </ul> <h3 id="Installer_IsHostApp">タスクバーボタン</h3> <p>v2インストーラーには、タスクバーボタンを分離するオプションがありません。これまでは、各AutoHotkey実行ファイルを<a href="https://learn.microsoft.com/windows/win32/shell/app-registration">ホストアプリ(IsHostApp)</a>として登録することで実現していましたが、この方法には限界があり、複数のバージョンをインストールできるようになると管理しにくくなります。代わりに、各スクリプトは、グループ化を制御するために、そのプロセスまたはウィンドウの<a href="https://learn.microsoft.com/windows/win32/shell/appids">AppUserModelID</a>を設定する必要があります。</p> <h3 id="Installer_uiAccess">UIアクセスで実行</h3> <p>Program Filesの下にインストールする場合、インストーラは、いくつかの<a href="FAQ.htm#uac">一般的なUAC関連の問題</a>を回避するために使用できるAutoHotkey exeファイルの追加セットを作成します。これらのファイルには"_UIA.exe "という接尾辞が付けられます。これらのUIA.exeファイルの1つを管理者が使用してスクリプトを実行すると、スクリプト自体が管理者として実行されることなく、スクリプトは管理者として実行されるプログラムのウィンドウと対話することができます。</p> <p>インストーラーは以下のことを行う:</p> <ul> <li>各AutoHotkey*.exeをAutoHotkey*_UIA.exeにコピーします。</li> <li>各UIA.exeファイルの埋め込みマニフェストに<a href="https://learn.microsoft.com/windows/win32/winauto/uiauto-securityoverview">uiAccess属性</a>を設定します。</li> <li>AutoHotkey」という名前の自己署名デジタル証明書を作成し、各UIA.exeファイルに署名します。</li> <li>エクスプローラーのコンテキストメニューに「UIアクセスで実行」として表示される<em>UIAccess</em>シェル動詞を登録する。デフォルトでは、<a href="#launcher">ランチャー</a>が実行され、スクリプトを実行するために適切なUIA.exeファイルを選択しようとします。</li> </ul> <p><a href="#launcher">ランチャー</a>は、v1スクリプト、v2スクリプト、またはその両方をUIアクセスで実行するよう設定することもできますが、選択したバージョンとビルドのUIA.exeファイルが存在しない場合、このオプションは機能しません。</p> <p>UIアクセスで他のスクリプトを実行する必要があるスクリプトは、適切なUIA.exeファイルを通常の<a href="#cmd">コマンドラインパラメータ</a>で<a href="lib/Run.htm">実行</a>するだけです。あるいは、<em>UIAccess</em>シェル動詞が登録されていれば、Run経由で使用することもできます。For example: <code>Run '*UIAccess "Script.ahk"'</code></p> <p><strong>既知の制限事項:</strong></p> <ul> <li>UIAは、ファイルが信頼できる場所、すなわちProgram Filesサブディレクトリにある場合にのみ有効です。</li> <li>あるコンピュータで作成されたUIA.exeファイルは、その署名に使用されたデジタル証明書を最初にインストールしない限り、他のコンピュータで実行することはできません。</li> <li>セキュリティ上の制限により、UIA.exeファイルをCreateProcessで起動することはできません。代わりにShellExecuteが使える。<a href="lib/Run.htm">Run</a>は両方を試す。</li> <li>ファイルのデジタル署名が無効になるため、UIA.exeファイルを変更することはできません。</li> <li>UIAプログラムは他のプログラムとは異なる「完全性レベル」で実行されるため、他のUIAプログラムによって登録されたオブジェクトにしかアクセスできない。例えば、<code><a href="lib/ComObjActive.htm">ComObjActive</a>("Word.Application")</code>は、WordがUIアクセス用にマークされていないため、失敗します。</li> <li>スクリプト自身のウィンドウは、セキュリティ上の理由から、UIA以外のプログラム/スクリプトによって自動化することはできません。</li> <li>マウスフックを使用する非UIAスクリプトを実行すると(<code>InstallMouseHook</code>のような単純なものであっても)、マウスがUIAスクリプトが所有するウィンドウを指しているときに、すべてのマウスホットキーが動作しなくなることがあります。回避策は、UIAスクリプトが最後にロードされるようにすることです。</li> <li>新しい親ウィンドウが常に上にあり、子ウィンドウが常に上にない場合、UIAはGui<a href="lib/Gui.htm#Parent">+Parent</a>オプションが既存のウィンドウ上で機能するのを防ぎます。</li> </ul> <p>詳しくは、アーカイブフォーラムの「<a href="https://www.autohotkey.com/board/topic/70449-enable-interaction-with-administrative-programs/">管理プログラムとの相互作用を有効にする</a>」をご覧ください。</p> </body> </html>