Share via


GetKeyboardState 函式 (winuser.h)

將 256 虛擬金鑰的狀態複製到指定的緩衝區。

語法

BOOL GetKeyboardState(
  [out] PBYTE lpKeyState
);

參數

[out] lpKeyState

類型: PBYTE

接收每個虛擬金鑰狀態資料的 256 位元組陣列。

傳回值

類型: BOOL

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

應用程式可以呼叫此函式,以擷取所有虛擬金鑰的目前狀態。 當執行緒從其訊息佇列中移除鍵盤訊息時,狀態會變更。 當鍵盤訊息張貼至執行緒的訊息佇列時,狀態不會變更,也不會隨著鍵盤訊息張貼至其他執行緒的訊息佇列或從訊息佇列擷取而變更。 (例外狀況:透過 AttachThreadInput 連線的執行緒會共用相同的鍵盤狀態。)

當函式傳回時, lpKeyState 參數所指向之陣列的每個成員都包含虛擬索引鍵的狀態資料。 如果高序位為 1,則索引鍵會關閉;否則,就會啟動。 如果機碼是切換鍵,例如 CAPS LOCK,則按鍵切換時,低序位為 1,如果按鍵未切換則為 0。 低序位對非切換鍵而言沒有意義。 切換鍵會在開啟時切換。 切換鍵的指標燈 (,如果鍵盤上有任何) 在切換按鍵時開啟,並在按鍵取消切換時關閉。

若要擷取個別金鑰的狀態資訊,請使用 GetKeyState 函式 。 若要擷取個別按鍵的目前狀態,不論是否已從訊息佇列擷取對應的鍵盤訊息,請使用 GetAsyncKeyState 函式。

應用程式可以使用虛擬機器碼常數 VK_SHIFTVK_CONTROLVK_MENU 做為 lpKeyState所指向陣列的索引。 這會提供 SHIFT、CTRL 或 ALT 鍵的狀態,而不區分左鍵和右鍵。 應用程式也可以使用下列虛擬索引鍵程式碼常數作為索引,以區分這些索引鍵的左右實例:

VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
 

這些左和右辨別常數只能透過GetKeyboardState、SetKeyboardStateGetAsyncKeyStateGetKeyStateMapVirtualKey函式來使用。

規格需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-rawinput-l1-1-0 (于 Windows 10 10.0.14393 版)

另請參閱