autoit HotKeySet 函數(shù)
HotKeySet ( "熱鍵" [, "函數(shù)名"] )
參數(shù)
熱鍵 | 要設(shè)置的熱鍵,按鍵格式與 Send() 函數(shù)使用的一樣。 |
函數(shù)名 | [可選參數(shù)] 按下熱鍵后要調(diào)用的函數(shù)名。留空則撤銷此前設(shè)置的熱鍵。 |
返回值
成功: | 返回值為1。 |
失?。?/TD> | 返回值為0。 |
注意
每個腳本程序最多能同時注冊64個熱鍵。如果有兩個 AutoIt 腳本設(shè)置了同樣的熱鍵,您應(yīng)該避免同時運行這兩個腳本程序(否則第二個腳本將無法捕獲熱鍵,除非第一個腳本終止運行或在第二個腳本設(shè)置熱鍵前撤銷了沖突熱鍵)。
用戶按下熱鍵后 *通常會* 中斷當(dāng)前運行中的 AutoIt 函數(shù)/語句,并運行該熱鍵關(guān)聯(lián)的用戶函數(shù),直到其完成操作或被中斷為止。當(dāng)然也會有些例外:
1) 如果當(dāng)前(運行的)函數(shù)是個“阻斷型(blocking)”函數(shù),則鍵擊動作將被緩沖并等待該阻斷型函數(shù)完成操作后才繼續(xù)執(zhí)行。MsgBox 和 FileSelectFolder 就是典型的阻斷型函數(shù)。您可以試試在下面示例腳本中定義的熱鍵 Shift-Alt-d。
2) 如果您在 AutoIt 的托盤菜單上選擇了暫停腳本則任何在暫停期間按下的熱鍵都將被忽略。
不能設(shè)置的熱鍵:
Ctrl+Alt+Delete | 由 Windows 保留 |
F12 | 也是由 Windows 保留,涉及到 API。 |
小鍵盤上的 Enter(回車)鍵 | 使用 {Enter} 即可同時捕獲主鍵盤和小鍵盤上的回車鍵 |
Win+B,D,E,F,L,M,R,U; 以及 Win+Shift+M | 這些都是 Windows 內(nèi)置的快捷鍵。注意:Win+B 和 Win+L 僅由 Windows XP 以上系統(tǒng)保留。 |
Alt, Ctrl, Shift, Win | 這些都是輔助按鍵! |
其它 | 任何由第三方軟件定義的全局熱鍵、任何由兩個或更多“基鍵”組成的熱鍵(比如 '{F1}{F2}')、任何型如 '{LALT}' 或 '{ALTDOWN}' 的按鍵。 |
在設(shè)置了一個熱鍵后,AutoIt 將嘗試捕獲指定按鍵事件但并不會把它傳遞到激活程序中,不過也有一個例外:按下 Lock 鍵(包括 NumLock、CapsLock 和 ScrollLock)在任何時候都將切換其相應(yīng)狀態(tài)!如果希望把捕獲的熱鍵事件發(fā)送到激活程序中,您就必須先注銷該熱鍵然后再調(diào)用 Send 或 ControlSend 函數(shù):
; 捕獲并傳遞按鍵事件
HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
; ... 這里可定義要做的各種任務(wù)
HotKeySet("{Esc}")
Send("{Esc}")
HotKeySet("{Esc}", "captureEsc")
EndFunc
相關(guān)
Send, ControlSend
示例
; 按下 Esc 將終止腳本,按下 Pause/Break 則將“暫?!?/SPAN>
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('腳本已被“暫?!?,0,0)
WEnd
ToolTip("")
EndFunc
Func Terminate()
Exit 0
EndFunc
Func ShowMessage()
MsgBox(4096,"","這是一個對話框。")
EndFunc