GetAsyncKeyState(int vKey)中的点逗号减号
Posted
技术标签:
【中文标题】GetAsyncKeyState(int vKey)中的点逗号减号【英文标题】:Dot Comma Minus Plus in GetAsyncKeyState(int vKey) 【发布时间】:2013-12-13 18:07:49 【问题描述】:我正在尝试使用 GetAsyncKeyState(int vKey) 函数,但我有一个小问题: 它适用于字母、数字和键(如 Enter 或空格),但当我尝试使用例如逗号“,”时,该功能不起作用。
#include <myHead.h>
int main()
char i = 44;
while(1)
Sleep(5);
if(GetAsyncKeyState(i)<0)
cout << "Got it!";
我应该补充一点,我使用的是 Windows 7 膝上型电脑
【问题讨论】:
44 是打印屏幕键的 VK 代码... 我在ascii表里查了一下,44是","? VK 码 != ASCII 码(那么打印屏幕的代码是什么?)msdn.microsoft.com/en-us/library/windows/desktop/… 但是为什么 ascii 码可以使用数字和字母呢? 因为他们故意让那些和 ASCII 码一样。 【参考方案1】:使用VkKeyScanEx 函数了解给定字符的 VK 代码。
如果您只是对用户按下键盘上的相应键感兴趣,那应该可以解决问题。但是,如果你想区分移位/非移位,或者使用 ALT(作为法语键盘上的欧元符号,Alt+E),事情就变得更复杂了。
简单示例:
SHORT sRet = VkKeyScanEx( ',', 0 );
BYTE vk = LOBYTE( sRet );
在我的笔记本电脑上,vk 为 188 (0xBC),当我按下“,”键盘键(法语键盘)时,GetAsyncKeyState(188) 返回
(是的,VK_OEM_COMMA 是 0xBC)
【讨论】:
@HansPeter Hum... 接受答案和支持答案是两件事。以上是关于GetAsyncKeyState(int vKey)中的点逗号减号的主要内容,如果未能解决你的问题,请参考以下文章
使用 GetAsyncKeyState() 的键监听器/记录器
“getAsyncKeyState”是不是会触发防病毒程序 c++
杂文虚拟键码表(供函数GetAsyncKeyState()使用)