HOTKEYSET

HOTKEYSET,計算機程式語言函式,其功能是設定一個可調用某用戶函式的熱鍵。

函式參考HotkeySet
設定一個可調用某用戶函式的熱鍵.
HotKeySet ( "熱鍵" [, "函式名"] )

參數

熱鍵 要設定的熱鍵,按鍵格式與 Send() 函式使用的一樣.
函式名 [可選參數] 按下熱鍵後要調用的函式名.留空則撤銷此前設定的熱鍵.

返回值

成功: 返回值為 1.
失敗: 返回值為 0.

注意/說明

It is better to use the lower keyboard key as for keyboard as Russian one, the unshifted key is not the lower value. I.E. "D" is not the upper case of "B". The Hotkey will not be set and a failure will occur.
如果有兩個 AutoIt 腳本設定了同樣的熱鍵,您應該避免同時運行這兩個腳本程式(否則第二個腳本將無法捕獲熱鍵,除非第一個腳本終止運行或在第二個腳本設定熱鍵前撤銷了衝突熱鍵).
用戶按下熱鍵後 *通常會* 中斷當前運行中的 AutoIt 函式/語句,並運行該熱鍵關聯的用戶函式,直到其完成操作或被中斷為止.當然也會有些例外:
1) 如果當前(運行的)函式是個"阻斷型(blocking)"函式,則鍵擊動作將被緩衝並等待該阻斷型函式完成操作後才繼續執行.MsgBox 和 FileSelectFolder 就是典型的阻斷型函式.您可以試試在下面示例腳本中定義的熱鍵 Shift-Alt-d.
2) 如果您在 AutoIt 的托盤選單上選擇了暫停腳本則任何在暫停期間按下的熱鍵都將被忽略.
不能設定的熱鍵:

Ctrl+Alt+Delete 由 Windows 系統保留
F12 也是由 Windows 保留,涉及到 API.
小鍵盤上的 Enter(回車)鍵 使用 {Enter} 即可同時捕獲主鍵盤和小鍵盤上的回車鍵.
Win+B,D,E,F,L,M,R,U; 以及 Win+Shift+M 這些都是 Windows 內置的快捷鍵. Note: Win+B 和 Win+L 僅由 Windows XP 以上系統保留.
Alt, Ctrl, Shift, Win 這些都是輔助按鍵!
其它 任何由第三方軟體定義的全局熱鍵、任何由兩個或更多"基鍵"組成的熱鍵 '{F1}{F2}', 任何型如'{LALT}' 或 '{ALTDOWN}'的按鍵.

在設定了一個熱鍵後,AutoIt 將嘗試捕獲指定按鍵事件但並不會把它傳遞到激活程式中,不過也有一個例外:按下 Lock 鍵(包括 NumLock、CapsLock 和 ScrollLock)在任何時候都將切換其相應狀態!
如果希望把捕獲的熱鍵事件傳送到激活程式中,您就必須先註銷該熱鍵然後再調用 Send 或 ControlSend 函式:
; 捕獲並傳遞按鍵事件
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
;;;; 下面是程式正文 ;;;;
While1
Sleep(100)
wend
;;;;;;;;
FuncTogglePause()
$Paused=Not$Paused
While$Paused
Sleep(100)
ToolTip('腳本已經"暫停"了',0,0)
WEnd
ToolTip("")
EndFunc ;==>TogglePause
FuncTerminate()
Exit0
EndFunc ;==>Terminate
FuncShowMessage()
MsgBox(4096,"標題","這是一個訊息.")
EndFunc ;==>ShowMessage

相關搜尋

熱門詞條

聯絡我們