我一直在设计一个处理程序,以便在某些外部设备和键盘之间建立连接。为此,我使用带有CkHttp
的C ++来发送一些JSON
的http请求。
然而,我唯一的问题似乎是在我的控制台没有聚焦时检测到系统按键。我不要求应用程序是可移植的C ++,因为我只是为Windows开发它。
当我试图找到一些可以在未聚焦但无法检索系统按键的Windows头功能时。以下是我尝试使用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
。我也不要求,除非它有效。只要它在后台检测到按键,就可以使用严格的控制台。
答案 0 :(得分:0)
正如@Brandon所说,我的解决方法涉及SetWindowsHookEx()
windows函数作为键处理程序。