gpt4 book ai didi

keystroke - SendInput 不适用于游戏

转载 作者:行者123 更新时间:2023-12-01 04:11:34 25 4
gpt4 key购买 nike

我正在使用以下标准 GenerateKey 代码:

void GenerateKey ( int vk , BOOL bExtended)
{
KEYBDINPUT kb={0};
INPUT Input={0};
// generate down
if ( bExtended )
kb.dwFlags = KEYEVENTF_EXTENDEDKEY;
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;

Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));

// generate up
::ZeroMemory(&kb,sizeof(KEYBDINPUT));
::ZeroMemory(&Input,sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if ( bExtended )
kb.dwFlags |= KEYEVENTF_EXTENDEDKEY;

kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
::SendInput(1,&Input,sizeof(Input));
}

我调用这个函数来模拟箭头键(上、下、左、右)。但是,这适用于普通的资源管理器窗口和小型 Flash 游戏。但是,当我在《极品飞车》或《Roadrash》之类的游戏上尝试它时,它不起作用.. 这种行为有什么可能的原因吗?

最佳答案

您的游戏很可能使用在较低级别上工作的 DirectInput,因此您无法使用 SendInput() 向其注入(inject)事件。一个键盘filter driver可能需要做你想做的事。我做了快速的谷歌搜索,但没有提出任何明确的建议,但我希望这能让你知道你需要走哪条路。

应该有keyboard filter driver sample您可以根据自己的目的修改 WDK(Windows 驱动程序工具包)。这将是相当复杂的。

关于keystroke - SendInput 不适用于游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com