Отправить ключи фоновому приложению - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь отправить ключи приложению, работающему в фоновом режиме. Я хочу отправить «Alt + f + a» фоновому приложению. Я пробовал type_keys('%fa') из pywinauto, но это выводит окно на передний план, я хочу, чтобы оно оставалось в фоновом режиме.

Вот немного того, что у меня сейчас есть:

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) отправит команду в активное окно. Итак, я использую VsCode в качестве текстового редактора, и вместо целевого приложения туда отправляется 'Alt + f + a'.

Я пробовал использовать send_keystrokes() вместо type_keys(), но это не так. завершите команду. Он отправляет «Alt + f» в фоновом режиме, но не отправляет «a». Я попытался вызвать «Alt + f», затем «Alt + a» сразу после (и с задержкой по времени), но отправка другого «Alt» просто закрывает меню открытого файла.

Во время поиска я видел PostMessage() от win32gui, но не удалось заставить это работать.

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Вы можете попробовать win.send_keystrokes("{VK_MENU DOWN}fa{VK_MENU UP}") удерживать Alt в течение 2 символов, а затем отпустить.

0 голосов
/ 04 августа 2020

попробуйте отправить 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 like в описании говорится, что нажатия клавиш отправляются беззвучно ^^

...