解决GetAsyncKeyState()全盘监听的方法!!!

在游戏开发或编些程序的时候,有时会需要监听键盘,来完成某一项操作,
最常用的就是 getch()GetAsyncKeyState()
getch() 有一定的输入延迟,跟输入文本一样的机制,但它只能返回最后按下的键
GetAsyncKeyState() 无延迟,可以单独获取某一按键的状态
GetAsyncKeyState() 有个问题:
GetAsyncKeyState()全盘监听,即使它在窗口后端,也会监听
想想,你写个文档、输个密码,发现游戏角色在跟着移动,就很恐怖,
所以可以加一个当前窗口是否在最前端的判断,代码如下:

头文件

#include<windows.h>

函数

bool window_up(){
	return GetConsoleWindow()==GetForegroundWindow();
}//GetConsoleWindow()当前窗口句柄,GetForegroundWindow()最前面的窗口句柄

然后就能快快乐乐的在后面加个&&window_up()就行了
例如:

if((GetAsyncKeyState(0x41)&0x8000)&&window_up()){//按下了a键
	……
}

(不要问哪来的,问就是AI,找的资料都不靠谱,要么给一半不给了,要么太复杂还用不了)

1 个赞

JYZS

……

1 个赞

bibibibibibbibibi

什么?

1 个赞

没啥