gpt4 book ai didi

c++ - C 虚拟键盘输入有选择地工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:33 25 4
gpt4 key购买 nike

我正在开展一个项目,该项目需要使用 windows.h header 在 Microsoft Visual Studios 中编码的虚拟输入。为此,我使用了 keybd_event() 方法和 VkKeyScan() 方法:

keybd_event(VkKeyScan('w'), 0, 0, 0);
keybd_event(VkKeyScan('w'), 0, KEYEVENTF_KEYUP, 0);

但是,虚拟输入只能被某些程序识别,例如记事本、命令提示符、浏览器和其他使用文本字段的应用程序。我的项目的虚拟输入的目的是使用客户端来控制“VisualGameBoyAdvance”,它接受键盘输入,然后将其转换为命令,例如“w”=开始、“z”=按钮等。

为什么在文本字段中使用应用程序时读取的是虚拟输入,而不是作为命令? windows.h 头文件是否有替代方法或头文件中是否有更好的方法?

更新:我一直在尝试使用 VkKeyScanEx() 作为一种替代方法,将虚拟输入作为一种暗中尝试。如何指定我的输入语言环境标识符?我一直在尝试使用 UTF-8 和 en_AU.UTF-8,但没有成功。有没有图表翻译如何指定这个?

我也试过

keybd_event(GetKeyState('w'), 0, 0, 0);
keybd_event(GetKeyState('w'), 0, KEYEVENTF_KEYUP, 0);

哪个根本不起作用并尝试过

while(1){
/*Sleep(1000);
keybd_event(GetKeyState('w'), 0, 0, 0);
keybd_event(GetKeyState('w'), 0, KEYEVENTF_KEYUP, 0);*/
// Pause for 5 seconds.
Sleep(500);

// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;

// Press the "W" key
ip.ki.wVk = 0x57; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));

// Release the "A" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));

// Exit normally
}

最佳答案

问题是游戏是通过 DirectX 运行的,这会阻止虚拟键盘敲击。通过直接从 sys 渲染游戏,它避免了 directx 并且运行良好:)

关于c++ - C 虚拟键盘输入有选择地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585645/

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