首页 > 解决方案 > 将击键发送到不集中的进程pywinauto

问题描述

我正在尝试从“az”发送常规键盘输入的击键,这可能包括也可能不包括方向箭头键到正在运行的游戏进程,但是我对 pywinauto 文档感到困惑:

我已经通过 pid 通过以下方式连接了现有进程:

from pywinauto.application import Application
from pywinauto.keyboard import SendKeys    
app = Application().connect(process=1234)
#app.SendKeys('a')? Doesn't seem to work

我已经阅读了其他一些答案,但是对于文档的下一步是什么还不是很清楚,没有任何真实的例子。

我还从其他一些答案中读到 SendKeys 自动聚焦窗口,这不是我想要的,如果可能的话,是否可以静默地将击键发送到进程?

标签: python-3.xpywinauto

解决方案


有几个时刻。如果游戏进程有自己的带有本机句柄的窗口,您可以尝试以下操作:

 app.window(title="Window title").send_keystrokes("something")
 app.window(title="Window title").send_chars("something")

它甚至应该适用于最小化的窗口。特殊符号可能会出现差异,这些符号可能不适用于其中一些方法,甚至两者都不起作用。但是箭头可能应该与send_keystrokes.

如果是 DirectX 游戏,发送密钥可能是更复杂的任务。不久前,我发现了一些关于潜在实现的参考:https ://github.com/pywinauto/pywinauto/issues/469虽然我还没有机会尝试它。


推荐阅读