Hotkey

スクリプト実行中にホットキーを割り当てたり設定を変更したりする

Hotkey, KeyName [, Label, Options]
Hotkey, IfWinActive [, WinTitle, WinText]
Hotkey, IfWinExist [, WinTitle, WinText]
Hotkey, IfWinNotActive [, WinTitle, WinText]
Hotkey, IfWinNotExist [, WinTitle, WinText]

Parameters

引数名説明
KeyName ホットキー定義で使用するようなキー名。
すでに設定されているホットキーの場合、以下の引数に基づき設定が変更される。
この際、大文字小文字の違いや「^!c」と「!^c」のような修飾キー記号の順番の違いは無視される。
IfWin...サブコマンドによる条件の設定が有効の場合、その条件下でのアクションが設定・更新される。
Label ホットキー入力時に実行させたいラベル名。ホットキーラベルも可能。後ろの「:」や「::」は含まない。
すでに登録されているホットキーの場合、ここを空にすることで、他の設定だけを変更できる。
ラベル名のほかに以下のものも設定できる。
On
Offにしたホットキーを再度有効にする
Off
ホットキーを無効にする
Toggle
無効と有効を切り替える
AltTab他
各種AltTabアクションを割り当てる
Options 以下のオプションの組み合わせ。
半角スペースで区切っても、全部つなげて書いてもよい。
UseErrorLevel
何らかの問題が発生したとき、エラーダイアログを表示せず、後述のErrorLevel変数に値を代入して処理を続行する
On
停止されているホットキーのLabel割り当てを更新しつつ、再度有効にしたいときに指定する。
Off
ホットキーを無効にする。Labelを割り当てつつ無効にしたいときに使う。
B
#MaxThreadsBufferと同じバッファ処理を行う。
B0
バッファ処理を行わない
Pn
nにスレッドの優先度を指定。例えば「P3」
Tn
nにスレッド数の上限を指定。#MaxThreadsPerHotkeyで指定するものと同じ。
IfWinActive, IfWinExist, IfWinNotActive, IfWinNotExist ホットキーが動作する条件を設定する。
このサブコマンドで条件を変更すると、以後にHotkeyコマンドでホットキーに割り当てられたアクションは、その条件に一致する場合のみ動作するようになる。
条件の詳細は#Ifwin...指令の項を参照。
WinTitle, WinText ウィンドウのタイトル、テキストの条件を指定する。
「Hotkey,IfWinActive」のようにこの引数を空にして実行すると、「条件無し」に設定される。

ErrorLevel

IfWin..,系サブコマンドを使用した場合、設定に成功すれば0、何らかの問題が発生した場合1になる。

UseErrorLevelオプションを使用した場合、問題がなければ0、問題があった場合は以下のどれかになる。

1
Label引数で指定されたラベルが存在しない
2
KeyNameパラメータで指定されたキーが現在のシステムで使用できないか、そもそも存在しない
3
「WheelUp & MButton」のように、コンビネーションキーのプレフィクスキーに使用できないキーを指定した
4
AltTabやShiftAltTabに単独のキーを割り当てようとした(これらの機能には、2つ以上のキーからなるホットキーを割り当てる必要がある)
5
設定されていないホットキーの設定を更新しようとした
6
ホットキーは設定されているが、現在の「IfWin...」条件下のアクションが設定されていない時に設定を更新しようとした
50
登録しようとしたホットキーが他のアプリケーションで使用されていて登録できなかった(Windows9x系のみ)
51
Windows9x系では使用できないホットキーを設定しようとした
98
設定できるホットキー数の上限700個を超過した
99
空きメモリが足りずに処理に失敗した

KeyNameとUseErrorLevelオプションだけを指定することにより、そのホットキーが設定されているかどうかを調べることができる。

Hotkey, ^!p,, UseErrorLevel
if ErrorLevel in 5,6
	MsgBox The hotkey does not exist or it has no variant for the current IfWin criteria.

Remarks

このコマンドで割り当てるより、ホットキーラベルとして定義した方が効率がよい。
このコマンドは、スクリプトで動的に割り当てを変更したい場合などにのみ使用する。

一つのラベルを複数のホットキーに割り当てることもできる。
この場合、%A_ThisHotkey%変数でどのホットキーが押されたかを知ることができる。

このコマンドで作られたホットキーも、Suspendコマンドで停止することができる。

このコマンドでホットキーを登録・無効化した場合、キーボードフックマウスフックは自動的に有効・無効になる。

このコマンドでホットキーを作成すると、スクリプトは自動的に常駐になる。

Related

#Ifwin..., Hotkey Symbols, #MaxThreadsBuffer, #MaxThreadsPerHotkey, Suspend, Threads, Gosub, Return, Menu, SetTimer

Example(s)

Hotkey, ^!z, MyLabel
return

MyLabel:
MsgBox You pressed %A_ThisHotkey%.
return

; Other examples:
Hotkey, RCtrl & RShift, AltTab ; Makes RCtrl & RShift operate like Alt-Tab.
Hotkey, #c, On
Hotkey, $+#c, Off
Hotkey, ^!a, , T5 ; Change the hotkey to allow 5 threads.

Hotkey, IfWinActive, ahk_class Notepad
Hotkey, ^!c, MyLabelForNotepad