【发布时间】:2018-11-14 21:03:17
【问题描述】:
我设置了 2 个函数来模拟键盘按钮按下
void KeyboardButtonDown(DWORD a)
{
INPUT Input = { 0 };
// Set up a generic keyboard event.
Input.type = INPUT_KEYBOARD;
Input.ki.wVk = a;
SendInput(1, &Input, sizeof(INPUT));
}
void KeyboardButtonUp(DWORD a)
{
INPUT Input = { 0 };
Input.type = INPUT_KEYBOARD;
Input.ki.dwFlags = KEYEVENTF_KEYUP;
Input.ki.wVk = a;
SendInput(1, &Input, sizeof(INPUT));
}
它在大多数情况下都有效,但是在模拟箭头键时在某些应用程序中失败,作为一个简单的示例
KeyboardButtonDown(VK_LEFT);
Sleep(50);
KeyboardButtonUp(VK_LEFT);
Sleep(50);
它可以在记事本中使用,但在玩游戏时它什么也不做。我已经将游戏中的控件映射为使用其他键,然后它就可以正常工作了。
我在这里做错了什么?
【问题讨论】:
-
这个问题每周都会被问很多次。尝试搜索所有其他被询问的时间。
-
游戏有一个简单的方法来保护自己免受多人作弊,他们使用原始输入。欺骗他们的唯一方法是在驱动程序级别注入键盘输入,这不是默认键盘驱动程序所采用的技术。更换它并不经常完成。