我正在制作一个程序,使用GetKeyState()
函数来检查某个键是否被按下。但是,当程序没有激活(它只是在后台运行)时,我仍然可以获得按下按键的值。我怎么能克服这个问题,以便在我的程序处于活动状态时才能获得值?
对于我的一个密钥,这里是代码:
if (GetKeyState('A') < 0)
{
canvas [1] = colour;
}
答案 0 :(得分:1)
GetKeyState
只应用于检查 Ctrl , Shift 等以响应另一条输入消息:
应用程序调用GetKeyState以响应键盘输入消息
窗口/控件应该从keyboard messages得到大部分键盘输入,主要是WM_KEYDOWN
,WM_CHAR
和WM_KEYUP
。这些消息将通过键盘焦点发送到窗口。一些常用控件还允许父窗口处理一些输入消息。
答案 1 :(得分:0)
所以我不能使用任何其他方法,因为我根本不知道如何,这是我如何为其他想知道的人解决它:
我创建了一个常量变量,它等于打开时的活动窗口(我的程序很小,因此打开速度非常快)
const HWND window2 = GetForegroundWindow();
然后我测试了当前活动窗口是否与此相同:
HWND Window = GetForegroundWindow();
if (window2 == Window) { `**Put original code here**` }
这绝对是一种粗暴的做法,并确定它可能不适用于较大的程序,但如果它有效,它可以工作:)。