Function Reference

HotKeySet

ユーザー関数へのホットキー(ショートカットキー)を設定します。

HotKeySet ( "key" [, "function"] )

 

パラメータ

key ホットキーとして使うキーの組み合わせ Send()と同じ書式
function [オプション] キーが押された時呼ばれる関数の名前。このパラメータを指定しない場合、直前に設定したホットキーが解除されます。

 

返し値

成功 1を返します。
失敗 0を返します。

 

注意

2つのAutoItスクリプトに同じホットキーを設定した場合、それらを同時に走らせることは避けなければなりません。(1つ目のスクリプトが終了するか、2つ目のスクリプトがホットキーを設定する前に1つ目のスクリプトのキーの登録を解除しないと2つ目のスクリプトはホットキーを検知できません。)

ホットキーを押すと*一般的には*AutoItの関数/文の実行はユーザー関数の実行が終了、中断するまで中断されます。例外は次の通り。
1) 現在の関数が"ブロッキング"関数の場合。キー入力はバッファー(=記憶)され、ブロッキング関数が終了されると実行されます。MsgBoxやFileSelectFolderがブロッキング関数の例です。”例”のShift-Alt-d で試してみてください。
2) トレイのAutoItアイコンをクリックしてスクリプトを一時停止している場合。このような一時停止中のホットキー入力は全て無視されます。

次のホットキーは設定できません。

Ctrl+Alt+Delete ウィンドウズが使用しています。
F12 (ウィンドウズのAPIによれば)ウィンドウズが使用しています。
NumPad's Enter Key {Enter} を使うとキーボードの両方のEnter キーで反応してしまいます。
Win+B,D,E,F,L,M,R,UとWin+Shift+M これらはウィンドウズの組み込みショートカットです。注意:Win+B と Win+L はWindows XP 以上のみ
Alt, Ctrl, Shift, Win 修飾キーです!
その他 使用することがわかっているサードパーティーソフトウェアのグローバルホットキー全て。'{F1}{F2}'などの2つ以上の"ベースキー"の組み合わせ全て。'{LALT}' 、'{ALTDOWN}'のような形式のキー全て。

ホットキーを設定した場合、AutoItはキー入力を監視しホットキーをアクティブなアプリケーションに渡しません。ただし例外があります。Lockキー(NumLock、CapsLock、ScrollLock)でのそれぞれの状態の切り替えは可能です!
設定したホットキーと同じキーの組み合わせをSend()する場合、ControlSend()を使うか設定したホットキーの登録を解除しておかなければいけません。さもないとSend()は無限ループを引き起こす恐れがあります。

; キー入力を捕らえて渡します
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
    ; ・・・このようにして問題を回避できます
    HotKeySet("{Esc}")
    Send("{Esc}")
    HotKeySet("{Esc}", "captureEsc")
EndFunc


呼ばれる関数はパラメータを持てません。あっても無視されます。

@HotKeyPressed マクロを使うことで関数内で関数を呼んだキーを参照できます。

 

関連

Send, GUISetAccelerators

 


; Esc でスクリプト終了。 Pause/Break で "一時停止"

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage")  ;Shift-Alt-d

;;;; ここからメイン処理 ;;;;
While 1
    Sleep(100)
WEnd
;;;;;;;;

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096,"","This is a message.")
EndFunc