python编程输入图形_以编程方式将键盘输入发送到Windows中的图形应用程序(游戏)...

博主试图使用Python和C++的键盘事件模拟库向一个简单的视频游戏发送左、右、射击等基本操作,但发现这些方法只能在文本输入中工作,无法在游戏中生效。尽管游戏接受F12等特定键的输入,但箭头键或自定义键绑定在游戏中未被识别。博主提到游戏允许通过辅助屏幕键盘进行控制,这表明游戏本身能够接收键盘输入。寻求解决方案,特别是能够直接与游戏交互的方法。
摘要由CSDN通过智能技术生成

我想能够使用一个程序/脚本自动发送键盘控制到一个非常简单的视频游戏。只有3个按钮需要工作,他们可以是任何3个键盘按钮(键绑定可以在游戏中更改)。控制基本上是左,右,射击。在

我尝试过的事情:

Python:keybd_事件

发送密钥

发送输入

C++:使用wVk发送输入

在KEYEVENTF_SCANCODE标志打开的情况下,发送输入直接向wScan输入十六进制扫描代码

使用MapVirtualKey为wScan转换字符的SendInput(KEYEVENTF_SCANCODE flag on)

我在谷歌上搜索过这个问题,几乎所有人都指出了上述方法。它们都能很好地将文本输入到记事本或其他文本输入中(例如,向上箭头在命令提示符下很好地工作,可以启动最后一个命令输入)。他们也能很好地将角色发送到游戏中,你可以把你的名字放在高分榜上。在

我也可以成功地发送F12,而游戏正在运行(这将打开和关闭声音)。这至少表明,在实际的游戏中,它接收键盘命令,并且显然正确地解释了它们。在

我做不到的只是简单的动作指令(左、右、射击——这是简单游戏真正拥有的唯一命令)。我尝试过在游戏中设置箭头键(默认)和'a'、'd'、'w'的命令,并用其他应用程序验证这些命令正在被发送,以及(在字母键的情况下)游戏本身的高分输入屏幕。但在实际的游戏中它并没有注册它们。在

我可以使用屏幕上的键盘从辅助功能菜单发送击键来玩游戏。如果这能奏效,似乎必须有某种方法来完成这个看似简单的任务,但我完全不知所措,搜索结果充斥着破碎的建议(上面列出的方法)。在

有人能给我指出一个可行的方向,而不是上面列出的那些我已经尝试过的方法吗?所有类似问题的答案似乎都暗示了这一点?在

如果有一种方法可以直接从Python实现这一点,那将是理想的,但是如果真的需要,我可以处理其他语言。在

快速代码片段,例如:#include

int main()

{

INPUT ip;

// Time to focus the program

Sleep(5000);

ip.type = INPUT_keyboard;

ip.ki.dwFlags = KEYEVENTF_SCANCODE;

//'w'

ip.ki.wScan = 0x11;

SendInput(1, &ip, sizeof(INPUT));

ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;

SendInput(1, &ip, sizeof(INPUT));

return 0;

}

这个简单的程序会在5秒后,在记事本上输入字母'w'(或者cmd或者你浏览器的地址栏或者其他什么-任何文本输入都可以)现在,在游戏中,如果我把shoot设置为'w',它就可以正常工作了。如果我用屏幕上的键盘按“w”键,就可以了。但上述程序不会导致“射击”动作在游戏中发生。

但是,如果我将扫描码改为0x58('F12'),程序将适当地使声音在游戏中响起,就像我在实际键盘上按了F12一样。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值