#IfWinActive / #IfWinExist
実行制御 | 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_id と ahk_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