将密钥发送到后台应用程序

Send keys to background application

我正在尝试在后台向应用程序 运行 发送密钥。我想发送 'Alt+f+a' 到后台应用程序。我尝试了 pywinauto 中的 type_keys('%fa'),但这将 window 带到了前台,我希望它保留在后台。

这是我目前拥有的一些东西:

app = Application(backend="win32").connect(path=exePath)

# Open Save As
win = app.window(title_re=appTitle)
win.wait("enabled", timeout=60)
win.type_keys('%fa')    #Sends keys, but brings window to foreground

使用type_keys('%fa', set_foreground=False)会将命令发送到活动的window。所以,我使用 VsCode 作为我的文本编辑器,'Alt+f+a' 被发送到那里而不是目标应用程序。

我尝试使用 send_keystrokes() 而不是 type_keys(),但这并没有完成命令。它确实在后台发送 'Alt+f' 但不发送 'a'。我试过调用 'Alt+f' 然后 'Alt+a' 之后立即(并且有时间延迟)但是发送另一个 'Alt' 只是关闭打开的文件菜单。

在我的搜索过程中,我从 win32gui 中看到了 PostMessage(),但无法正常工作。

尝试将 type_keys 参数 set_foreground 发送到 False

像这样:

app = Application(backend="win32").connect(path=exePath)

# Open Save As
win = app.window(title_re=appTitle)
win.wait("enabled", timeout=60)
win.type_keys('%fa', set_foreground=False)

或试试这个方法:send_keystrokes 就像描述说的那样,它会静默发送击键 ^^

您可以尝试 win.send_keystrokes("{VK_MENU DOWN}fa{VK_MENU UP}") 按住 Alt 2 个符号然后松开。