词条 | GetAsyncKeyState |
释义 | VB声明Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer 说明判断函数调用时指定虚拟键的状态 返回值 Long,自对GetAsyncKeyState函数的上一次调用以来,如键已被按过,则位0设为1;否则设为0。如键目前处于按下状态,则位15设为1;如抬起,则为0。微软的win32手册指出:倘若输入焦点从属于与调用函数的输入线程不同的另一个输入线程,则返回值为0(例如,一旦另一个程序拥有焦点,则它应返回零)。证据显示,函数实际是在整个系统的范围内工作的 参数表参数 类型及说明 vKey Long,欲测试的虚拟键的键码 注解 如指定了VK_LBUTTON 或 VK_RBUTTON,按钮的状态就会根据实际的按钮报告——无论是否曾用SwapMouseButton函数对鼠标的位置进行了交换。win32提供了额外的一些虚拟键码,比如VK_LSHIFT 和 VK_RSHIFT,以便在两个完全一样的键中区分出左右(也包括Ctrl 和 Alt) C++语言功能:确定用户当前是否按下了键盘上的一个键 原型:SHORT GetAsyncKeyState(int vKey); 参数:nVirtKey指出要检查键的虚键代码。结果的高位指出该键当前是否被按下(是为1,否为0)。 常用键的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 鼠标右键 另一个函数GetKeyState与GetAsyncKeyState函数不同。GetAsyncKeyState在按下某键的同时调用,判断正在按下某键。 GetKeyState则在按过某键之后再调用,它返回最近的键盘消息从线程的队列中移出时的键盘状态,判断刚按过了某键。 C#声明[DllImport("User32"),] public static extern int GetAsyncKeyState(long vKey); 在VS2010下上面的声明报错,下面的声明可用 [DllImport("User32"),] public static extern int GetAsyncKeyState(int vKey); Windows API: GetAsyncKeyState 函数功能:该函数判断在此函数被调用时,某个键是出于UP状态还是出于DOWN状态,及前次调用GetAsyncKeyState函数后,是否按过此键.如果返回值的最高位被置位,那么该键处于DOWN状态;如果最低位被置位,那么在前一次调用此函数后,此键被按过,否则表示该键没被按过. 函数原型:SHORT GetAsyncKeyState(int nVirtKey); 参数说明: 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 仅当应用程序调用GetKeyboardSlate,SetKeyboardState,GetAsyncKeystate;GetKeyState和MapVirtualKey函数时,才可用这些区分左右键的常数。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。