首页 > 解决方案 > 如何使用 DeviceIOControl 将键盘按下发送到视频游戏?

问题描述

我正在尝试通过 LAN 连接传递键盘和鼠标输入。虽然我已经成功地使用SendInput()记事本和 Visual Studio 之类的功能做到了这一点,但输入并未在许多视频游戏中注册。在做了一些研究之后,我似乎需要使用DeviceIOControl来完成任务,但是我不知道当必须在运行时确定键码时我应该如何执行此操作。

我不确定我是否可以随意将 hDevice 参数设置为传入的键码,或者代码最终会是什么样子。

如果有帮助,下面的代码就是当前用于输入按键的代码。服务器接收到一个字符串,该字符串被解析出来以确定按键和按键的状态(无论是按键事件还是按键事件)。此信息作为参数传递给此函数:

void keyPress(WORD k, int state)
{
    INPUT Inputs;

    std::cout<<"Key="<<k<<", state="<<state<<std::endl;
    Inputs.type=INPUT_KEYBOARD;
    Inputs.ki.wVk=k;

    if(state==1)
    {
        Inputs.ki.dwFlags=0;
        SendInput(1, &Inputs, sizeof(INPUT));
    }
    else
    {
        Inputs.ki.dwFlags=KEYEVENTF_KEYUP;
        SendInput(1, &Inputs, sizeof(INPUT));
    }

    if((int)k!=0)     //Keycode of 0 means that the last key pressed is being held down.
    {
        LastKey=k;
        key[  0]=LastKey;
    }
}

另外,如果我走错了兔子洞并且有更好的解决方案,请告诉我!

谢谢,

标签: c++inputkeyboard

解决方案


推荐阅读