#IfWinActive / #IfWinExist

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

#IfWinActive / #IfWinExist[編集]

ホットキーを特定のウィンドウのアクティブ/存在時のみ有効になるように設定する。

#IfWinActive [, WinTitle, WinText]
#IfWinExist [, WinTitle, WinText]
#IfWinNotActive [, WinTitle, WinText]
#IfWinNotExist [, WinTitle, WinText]
#If [, Expression]

Parameters[編集]

引数名 説明
WinTitle ウィンドウタイトルなどの条件を指定。
ウィンドウ指定の方法参照。
ただし、ウィンドウタイトルとahk_class, ahk_group それらの複数条件の同時指定のみ有効。
ahk_idahk_pid は、一応機能するが、あらかじめ知っておくことができないのでほとんど意味がない。
%VarName%のような変数参照は、今のところ使用できない。
ただし、将来の拡張のために、 %記号は `%のようにエスケープしておくこと。
WinText ウィンドウに含まれるテキストの条件を指定。
引数の数が増やされることもあり得るので、 ,`, のようにエスケープすること。

Remarks[編集]

本ディレクティブが記述された部分より後で定義されるホットキーは、記述された条件に一致しているときのみ有効になる。
#IfWinActiveでは指定ウィンドウがアクティブの時のみ、#IfWinExistでは指定ウィンドウが存在するときのみ、#IfWinNotActiveでは指定ウィンドウがアクティブではないときのみ、#IfWinNotExistでは指定ウィンドウが存在しないときのみ有効になる。

AltTabホットキーはこれらの条件にかかわらず、常に有効になる。

これらの条件は、最後に指定した物一つのみが有効になる。
#IfWinActiveのように全ての引数を省略して記述すると、条件が 条件無しになる。

条件ごとに同じホットキーに別の動作を割り当てることができる。

#IfWinActive ahk_class Notepad
^!c::MsgBox You pressed Control+Alt+C in Notepad.
#IfWinActive ahk_class WordPadClass
^!c::MsgBox You pressed Control+Alt+C in WordPad.
#IfWinActive
^!c::MsgBox You pressed Control+Alt+C in a window other than Notepad/WordPad.

#IfWinActive ahk_class Notepad#IfWinExist ahk_class Notepadのように、複数の同時に成立し得る条件にアクションを設定してある場合、一番最初に設定された条件付きアクションが優先される。
一致する条件が一つもない場合、 条件無しで設定されたアクションが実行される。
条件無しでのアクションも設定されていない場合、そのキーの本来の動作が行われる。(WindowsNT系のみ)

Gosub,^!cのようにしてホットキーラベルへ直接ジャンプする場合、条件にかかわらずスクリプトの一番最初に現れるホットキーラベルにジャンプする。

スクリプト実行中にHotkeyコマンドを使用すると、スクリプトの最後で指定されていた条件下でのホットキーアクションが設定・変更される。
Hotkey,IfWinActive,ahk_class Notepadのように、IfWin...系サブコマンドで、条件を変更したり 条件無しにしたりできる。

通常、 a & bのようなコンビネーションキーを指定していると、プレフィクスキー(先に書かれた方のキー)の本来の機能は無効になる。
しかし、そのキーをプレフィクスとして使用するコンビネーションキーが全て条件により無効になっているときは、そのキー本来の動作が行われる。

IfWinActiveおよびIfWinExistの条件が付いたホットキーサブルーチンが実行されるとき、LastFoundWindowは当該ウィンドウに設定される。

AHKL ウィンドウのタイトルや種類以外の条件でホットキー定義を行いたい場合、#If を利用する。

Related[編集]

Hotkeys, Hotstrings, Suspend, Hotkey command, IfWinActive, IfWinExist, SetTitleMatchMode, DetectHiddenWindows

AHKL #If

Example(s)[編集]

#IfWinActive ahk_class Notepad
^!a::MsgBox You pressed Ctrl-Alt-A while Notepad is active.  ; This hotkey will have no effect if pressed in other windows (and it will "pass through").
#c::MsgBox You pressed Win-C while Notepad is active.
::btw::This replacement text for "btw" will occur only in Notepad.
#IfWinActive
#c::MsgBox You pressed Win-C in a window other than Notepad.
#IfWinExist ahk_class Notepad
+#n::WinActivate
#IfWinExist
+#n::Run,notepad.exe