GetAsyncKeyState

GetAsyncKeyState

GetAsyncKeyState是一個用來判斷函式調用時指定虛擬鍵的狀態,確定用戶當前是否按下了鍵盤上的一個鍵的函式。如果按下,則返回值最高位為1。

說明

返回值 SHORT

自對GetAsyncKeyState函式的上一次調用以來,如鍵已被按過,則位0設為1;否則設為0。如鍵目前處於按下狀態,則位15設為1;如抬起,則為0。

微軟的win32手冊指出:

倘若輸入焦點從屬於與調用函式的輸入執行緒不同的另一個輸入執行緒,則返回值為0(例如,一旦另一個程式擁有焦點,則它應返回零)。證據顯示,函式實際是在整個系統的範圍內工作的。

參數表

函式名返回值類型備註
GetAsyncKeyStateSHORT用來判斷函式調用時指定虛擬鍵的狀態
參數類型說明
vKeyint欲測試的虛擬鍵的鍵碼

如指定了VK_LBUTTON 或 VK_RBUTTON,按鈕的狀態就會根據實際的按鈕報告——無論是否曾用SwapMouseButton函式對滑鼠的位置進行了交換。win32提供了額外的一些虛擬鍵碼,比如VK_LSHIFT 和 VK_RSHIFT,以便在兩個完全一樣的鍵中區分出左右(也包括Ctrl 和 Alt)

VB聲明

C#聲明

Windows API:

GetAsyncKeyState

函式功能:該函式判斷在此函式被調用時,某個鍵是處於UP狀態還是處於DOWN狀態,及前次調用GetAsyncKeyState函式後,是否按過此鍵.如果返回值的最高位被置位,那么該鍵處於DOWN狀態;如果最低位被置位,那么在前一次調用此函式後,此鍵被按過,否則表示該鍵沒被按過.

函式原型:

參數說明:

nVirtKey:指定256個可能的虛擬鍵盤值中的一個.

注意事項:GetAsyncKeyState只對一個特定的執行緒可用,此時輸入是導向這個執行緒的.如果在當前其他執行緒中具有輸入焦點,則對GetAsyncKeyState的調用將返回零.

應用程式可以使用虛擬鍵碼常數VK_SHIFT,VK_CONTROL和VK_MENU作為nVirtKey參數的值。它給出shift,ctrl或alt鍵的值而不區分左右鍵,應用程式也可以使用如下的虛擬鍵碼常數作nVirtKey的值來區分前述鍵的左鍵、右鍵的情形。

VK_LSHIFT,VK_RSHIFT;VK_LCONTROL,VK_RCONTROL;VK_LMENU,VK_RMENU

僅當應用程式調用GetKeyboardState,SetKeyboardState,GetAsyncKeystate;GetKeyState和MapVirtualKey函式時,才可用這些區分左右鍵的常數。

C/C++聲明

功能:確定用戶當前是否按下了鍵盤上的一個鍵

常用鍵的VK值:

VK_SHIFT Shift鍵

VK_LSHIFT 左Shift鍵

VK_RSHIFT 右Shift鍵

VK_CONTROL Ctrl鍵

VK_LCONTROL 左Ctrl鍵

VK_RCONTROL 右Ctril鍵

VK_MENU Alt鍵

VK_LMENU 左Alt鍵

VK_RMENU 右Alt鍵

VK_LBUTTON 滑鼠左鍵

VK_RBUTTON 滑鼠右鍵

VK_ESCAPE ESC鍵

VK_RETURN回車鍵

VK_TABTAB鍵

VK_SPACE空格鍵

VK_UP↑鍵

VK_DOWN↓鍵

VK_LEFT←鍵

VK_RIGHT→鍵

另一個函式GetKeyState與GetAsyncKeyState函式不同。GetAsyncKeyState在按下某鍵的同時調用,判斷正在按下某鍵。

GetKeyState則在按過某鍵之後再調用,它返回最近的鍵盤訊息從執行緒的佇列中移出時的鍵盤狀態,判斷剛按過了某鍵。

GetAsyncKeyState 取異步鍵狀態。
比如,一般情況下,你可以在作業系統的控制臺中設定滑鼠左右鍵的映射(實際的滑鼠左鍵可以映射成右鍵點擊事件),或者通過程式也可以這樣設定,這樣就產生了物理鍵狀態(實際的),邏輯鍵狀態(虛擬的,)。使用 GetKeyState,GetKeyboardState,等函式得到的就是邏輯鍵狀態。
而GetAsyncKeyState 讀取的是物理鍵狀態,也是就是不管你怎么滑鼠鍵盤映射,它唯讀取實際的按鍵狀態。

相關詞條

相關搜尋

熱門詞條

聯絡我們