c++ - 如何使用 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;
}
}
另外,如果我走错了兔子洞并且有更好的解决方案,请告诉我!
谢谢,
解决方案
推荐阅读
- javascript - 错误,this.refs.inputLogin.value 未定义?
- sql - 如何在sql中按组计算最后1-7、8-14、15-21等行的总和作为单独的列
- css - 如何在样式组件中获取图像大小?
- python - 基于具有不同数据框列的条件的新列
- python - PySimpleGUI sg.Radio 按钮错误:__init__() 缺少 1 个必需的位置参数:'group_id'
- aem - 将花岗岩:数据添加到 cq 对话框文本字段
- rust - 为什么 std::iter::Map 不能作为迭代器返回
- ?
- html - 如何创建自定义 CSS 类以直接应用于 HTML 标记?
- azure - Azure QnA Maker 服务中是否有任何错误?
- python - 在 python 中实现优先级队列