Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在控制台未聚焦时检测按键_C++_Json_Windows_Event Handling - Fatal编程技术网

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

我一直在设计一个处理程序,在一些外部设备和我的键盘之间建立一些连接。为此,我使用C++和发送一些HTTP请求,使用<代码> JSON < /C> > 然而,我唯一的问题似乎是在我的控制台未聚焦时检测到系统按键。我不要求应用程序是可移植的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
。我也不要求这样,除非它起作用。一个严格的控制台就可以了,只要它能在后台检测按键。

如@Brandon所述,我的解决方案将
SetWindowsHookEx()
windows函数作为按键处理程序。

如@Brandon所述,我的解决方案将
SetWindowsHookEx()
windows函数作为按键处理程序。

在windows上,当窗口未聚焦时,您可以通过检查RawInput来检测按键,或者更简单的方法是使用SetWindowsHookEx并在其中侦听按键。@Brandon
SetWindowsHookEx
工作正常。在Windows上,当窗口未聚焦时,您可以通过检查RawInput来检测按键,或者更简单的方法是使用SetWindowsHookEx并在其中监听按键。@Brandon
SetWindowsHookEx
工作正常。