鍵盤輸入
本節說明系統如何產生鍵盤輸入,以及應用程式如何接收及處理該輸入。
本節內容
名稱 | 描述 |
---|---|
關於鍵盤輸入 | 討論鍵盤輸入。 |
使用鍵盤輸入 | 涵蓋與鍵盤輸入相關聯的工作。 |
鍵盤輸入參考 | 包含 API 參考。 |
函式
名稱 | 描述 |
---|---|
ActivateKeyboardLayout | 設定呼叫線程或目前進程的輸入地區設定標識元(先前稱為鍵盤配置句柄)。 輸入地區設定標識子會指定地區設定,以及鍵盤的實體配置。 |
BlockInput | 封鎖鍵盤和滑鼠輸入事件,讓應用程式無法觸達應用程式。 |
EnableWindow | 啟用或停用指定視窗或控件的滑鼠和鍵盤輸入。 停用輸入時,視窗不會收到輸入,例如滑鼠點選和按下按鍵。 啟用輸入時,視窗會接收所有輸入。 |
GetActiveWindow | 擷取連結至呼叫線程消息佇列之活動視窗的視窗句柄。 |
GetAsyncKeyState | 判斷呼叫函式時按鍵是向上或向下,以及先前呼叫 GetAsyncKeyState 之後是否按下按鍵。 |
GetFocus | 如果視窗附加至呼叫線程消息佇列,則擷取具有鍵盤焦點的視窗句柄。 |
GetKeyboardLayout | 擷取指定線程的作用中輸入地區設定標識碼(先前稱為鍵盤配置)。 如果IdThread參數為零,則會傳回使用中線程的輸入地區設定標識碼。 |
GetKeyboardLayoutList | 擷取輸入地區設定標識碼(先前稱為鍵盤配置句柄),對應到系統中目前的輸入地區設定集。 函式會將標識碼複製到指定的緩衝區。 |
GetKeyboardLayoutName | 擷取使用中輸入地區設定標識碼的名稱(先前稱為鍵盤配置)。 |
GetKeyboardState | 將 256 個虛擬金鑰的狀態複製到指定的緩衝區。 |
GetKeyNameText | 擷取表示索引鍵名稱的字串。 |
GetKeyState | 擷取指定之虛擬密鑰的狀態。 狀態會指定按鍵是向上、向下或切換的(開啟、關閉,每次按下按鍵時都會交替)。 |
GetLastInputInfo | 擷取最後一個輸入事件的時間。 |
IsWindowEnabled | 判斷指定的視窗是否啟用滑鼠和鍵盤輸入。 |
LoadKeyboardLayout | 將新的輸入地區設定識別碼(先前稱為鍵盤配置)載入系統。 一次可以載入數個輸入地區設定標識碼,但一次只有一個進程作用中。 載入多個輸入地區設定識別碼可讓您快速在它們之間切換。 |
MapVirtualKey | 將虛擬金鑰程式代碼轉譯為掃描碼或字元值,或將掃描碼轉譯為虛擬密鑰程式代碼。 若要指定用於翻譯指定程式碼的鍵盤配置句柄,請使用 MapVirtualKeyEx 函式。 |
MapVirtualKeyEx | 地圖 虛擬金鑰程式代碼轉換成掃描碼或字元值,或將掃描碼轉譯為虛擬密鑰程式代碼。 函式會使用輸入語言和輸入地區設定標識碼來翻譯程式碼。 |
OemKeyScan | 地圖 OEMASCII 代碼 0 到 0x0FF到 OEM 掃描碼和移位狀態。 函式會提供資訊,讓程式藉由模擬鍵盤輸入,將 OEM 文字傳送至另一個程式。 |
RegisterHotKey | 定義全系統熱鍵。 |
SendInput | 合成按鍵、滑鼠動作和按鈕點選。 |
SetActiveWindow | 啟動視窗。 窗口必須附加至呼叫線程的訊息佇列。 |
SetFocus | 將鍵盤焦點設定為指定的視窗。 窗口必須附加至呼叫線程的訊息佇列。 |
SetKeyboardState | 將256位元組的鍵盤按鍵狀態陣列複製到呼叫線程的鍵盤輸入狀態數據表。 這是 GetKeyboardState 和 GetKeyState 函式所存取的相同數據表。 對這個表格所做的變更不會影響任何其他線程的鍵盤輸入。 |
ToAscii | 將指定的虛擬按鍵程式代碼和鍵盤狀態轉譯為對應的字元或字元。 函式會使用鍵盤配置句柄所識別的輸入語言和實體鍵盤配置來翻譯程序代碼。 若要指定用來轉譯指定程式代碼的鍵盤配置句柄,請使用 ToAsciiEx 函式。 |
ToAsciiEx | 將指定的虛擬按鍵程式代碼和鍵盤狀態轉譯為對應的字元或字元。 函式會使用輸入語言和輸入地區設定標識碼識別的實體鍵盤配置來翻譯程式碼。 |
ToUnicode | 將指定的虛擬按鍵程式代碼和鍵盤狀態轉譯為對應的 Unicode 字元或字元。 若要指定用來轉譯指定程式代碼的鍵盤配置句柄,請使用 ToUnicodeEx 函式。 |
ToUnicodeEx | 將指定的虛擬按鍵程式代碼和鍵盤狀態轉譯為對應的 Unicode 字元或字元。 |
UnloadKeyboardLayout | 卸除輸入地區設定標識碼(先前稱為鍵盤配置)。 |
UnregisterHotKey | 釋放先前由呼叫線程註冊的熱鍵。 |
VkKeyScanEx | 將字元轉譯為對應的虛擬密鑰程式代碼和移位狀態。 函式會使用輸入語言和輸入地區設定標識碼所識別的實體鍵盤配置來翻譯字元。 |
下列函式已經過時。
函式 | 描述 |
---|---|
GetKBCodePage | 擷取目前的字碼頁。 |
keybd_event | 合成擊鍵。 系統可以使用這類合成擊鍵來產生WM_KEYUP或WM_KEYDOWN訊息。 鍵盤驅動程式的插斷處理程式會呼叫 keybd_event 函式。 |
VkKeyScan | 將字元轉譯為目前鍵盤的對應虛擬按鍵程式代碼和移位狀態。 |
訊息
名稱 | 描述 |
---|---|
WM_GETHOTKEY | 決定與視窗相關聯的作用鍵。 |
WM_SETHOTKEY | 將作用中索引鍵與視窗產生關聯。 當使用者按下熱鍵時,系統會啟動視窗。 |
Notifications
名稱 | 描述 |
---|---|
WM_ACTIVATE | 傳送至正在啟動的視窗和正在停用的視窗。 如果視窗使用相同的輸入佇列,則會同步傳送訊息,先傳送至停用最上層視窗的視窗程式,再傳送至要啟動的最上層窗口窗口程式。 如果視窗使用不同的輸入佇列,訊息會以異步方式傳送,因此會立即啟動視窗。 |
WM_APPCOMMAND | 通知視窗使用者產生應用程式命令事件,例如,按兩下應用程式命令按鈕使用滑鼠或在鍵盤上輸入應用程式命令鍵。 |
WM_CHAR | 當 TranslateMessage 函式翻譯WM_KEYDOWN訊息時,張貼至具有鍵盤焦點的視窗。 WM_CHAR訊息包含按下按鍵的字元碼。 |
WM_DEADCHAR | 當 TranslateMessage 函式翻譯WM_KEYUP訊息時,張貼至具有鍵盤焦點的視窗。 WM_DEADCHAR指定死鍵所產生的字元碼。 死鍵是產生字元的索引鍵,例如 umlaut (雙點),結合另一個字元以形成複合字元。 例如,umlaut-O 字元 () 是輸入 umlaut 字元的死鍵,然後輸入 O 鍵來產生。 |
WM_HOTKEY | 當使用者按下 RegisterHotKey 函式所註冊的熱鍵時張貼。 訊息會放在與註冊熱鍵之線程相關聯的消息佇列頂端。 |
WM_KEYDOWN | 按下非系統按鍵時,張貼到具有鍵盤焦點的視窗。 非系統索引鍵是未按下 ALT 鍵時所按下的按鍵。 |
WM_KEYUP | 當非系統按鍵放開時,張貼到具有鍵盤焦點的視窗。 非系統按鍵是當 ALT 鍵未按下時所按下的按鍵,或是當視窗具有鍵盤焦點時按下的鍵盤按鍵。 |
WM_KILLFOCUS | 在失去鍵盤焦點之前,立即傳送至視窗。 |
WM_SETFOCUS | 在取得鍵盤焦點之後傳送至視窗。 |
WM_SYSDEADCHAR | 當 TranslateMessage 函式翻譯WM_SYSKEYDOWN訊息時,會傳送至具有鍵盤焦點的視窗。 WM_SYSDEADCHAR指定系統死鍵的字元碼,也就是按住 ALT 鍵時按下的死鍵。 |
WM_SYSKEYDOWN | 當使用者按下 F10 鍵(會啟動功能表欄)或按住 ALT 鍵,然後按下另一個按鍵時,張貼到具有鍵盤焦點的視窗。 當目前沒有視窗具有鍵盤焦點時,也會發生此情況;在此情況下, WM_SYSKEYDOWN 訊息會傳送至使用中視窗。 接收訊息的視窗可以藉由檢查 lParam 參數中的內容程式代碼來區分這兩個內容。 |
WM_SYSKEYUP | 當使用者放開 ALT 鍵時按下的按鍵時,張貼到具有鍵盤焦點的視窗。 當目前沒有視窗具有鍵盤焦點時,也會發生此情況;在此情況下, 會將WM_SYSKEYUP 訊息傳送至使用中視窗。 接收訊息的視窗可以藉由檢查 lParam 參數中的內容程式代碼來區分這兩個內容。 |
WM_UNICHAR | 當 TranslateMessage 函式翻譯WM_KEYDOWN訊息時,張貼至具有鍵盤焦點的視窗。 WM_UNICHAR訊息包含按下按鍵的字元碼。 |
結構
名稱 | 描述 |
---|---|
HARDWAREINPUT | 包含鍵盤或滑鼠以外的輸入設備所產生的模擬訊息相關信息。 |
INPUT | 包含用於合成輸入事件的資訊,例如按鍵、滑鼠移動和滑鼠點擊。 |
KEYBDINPUT | 包含模擬鍵盤事件的相關信息。 |
LASTINPUTINFO | 包含最後一個輸入的時間。 |
MOUSEINPUT | 包含模擬滑鼠事件的相關信息。 |
常數
名稱 | 描述 |
---|---|
虛擬金鑰碼 | 系統所使用的虛擬按鍵代碼符號常數名稱、十六進位值和滑鼠或鍵盤對等專案。 程序代碼會以數值順序列出。 |