C++ 如何在控制台未聚焦时检测按键
我一直在设计一个处理程序,在一些外部设备和我的键盘之间建立一些连接。为此,我使用C++和C++ 如何在控制台未聚焦时检测按键,c++,json,windows,event-handling,C++,Json,Windows,Event Handling,我一直在设计一个处理程序,在一些外部设备和我的键盘之间建立一些连接。为此,我使用C++和 > 然而,我唯一的问题似乎是在我的控制台未聚焦时检测到系统按键。我不要求应用程序是可移植的C++,因为我只为Windows开发它。 当我试图找到一些windows标题函数时,它可以在未聚焦时检索系统按键,但无法。下面是我尝试使用SDL2lib作为结束方法的一些过程,但没有成功 #undef main int main(int argc, char** argv) { //init... w
SDL2
lib作为结束方法的一些过程,但没有成功
#undef main
int main(int argc, char** argv)
{
//init...
while (!quit)
{
while (SDL_PollEvent(&e) != 0) //Doesnt work with unfocused window... Found no flags that could do it
{
//User requests quit
if (e.type == SDL_QUIT)
{
quit = true;
}
//User presses a key
else if (e.type == SDL_KEYDOWN)
{
//Select surfaces based on key press
switch (e.key.keysym.sym)
{
case SDLK_q:
hreq.putJSON(new HPacket(25500, 254, 254, 0));
hreq.putJSON(new HPacket(0, 254, 254, 3));
break;
//some more handling...
}
//...
}
}
return 0;
}
请记住,使用
SDL2
会创建一个GUI
。我也不要求这样,除非它起作用。一个严格的控制台就可以了,只要它能在后台检测按键。如@Brandon所述,我的解决方案将SetWindowsHookEx()
windows函数作为按键处理程序。如@Brandon所述,我的解决方案将SetWindowsHookEx()
windows函数作为按键处理程序。在windows上,当窗口未聚焦时,您可以通过检查RawInput来检测按键,或者更简单的方法是使用SetWindowsHookEx并在其中侦听按键。@BrandonSetWindowsHookEx
工作正常。在Windows上,当窗口未聚焦时,您可以通过检查RawInput来检测按键,或者更简单的方法是使用SetWindowsHookEx并在其中监听按键。@BrandonSetWindowsHookEx
工作正常。