请输入您要查询的百科知识:

 

词条 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/27 8:59:48