Как отправить смоделированные нажатия клавиш в активное окно с помощью SendKeys - PullRequest
3 голосов
/ 09 января 2011

Я новичок в Python и пытаюсь отправить комбинацию нажатий клавиш в приложение, которое я открываю под Windows 7. Хотя мой сценарий будет работать безупречно, когда я вызываю Notepad.exe в целях тестирования, он не работает с реальным приложениемЯ пытаюсь использовать.

Вот мой код:

import win32com.client
import time
import SendKeys
import os
from ctypes import *

shell = win32com.client.Dispatch("WScript.Shell")

os.startfile("C:\...exe")

time.sleep( 5 )

shell.SendKeys('%{F4}')     # 'Alt+F4' to close the application again.

По какой-то причине приложение не закрывается в ответ на сценарий.Когда я нажимаю «Alt + F4» на моей клавиатуре, она закрывается, как и ожидалось.Любые идеи о том, что может происходить здесь?

Любая помощь приветствуется!Пожалуйста, имейте в виду, что я новичок в Python; -)

PS: я уже проверил, что приложение работает в активном окне, включив этот фрагмент кода:

import win32ui
wnd = win32ui.GetForegroundWindow()
print wnd.GetWindowText()

Ответы [ 2 ]

1 голос
/ 30 января 2017

Я знаю, что об этом спрашивали 6 лет назад, но кто-то может быть с такой же проблемой, поэтому вот возможное решение:

shell.AppActivate('Put_The_Name_Here')

Приведенный выше код выберет программу, файл и т. Д., Которые открыты, но не активированы, что, возможно, является вашей проблемой.

Надеюсь, это кому-нибудь поможет!

1 голос
/ 09 января 2011

ОК ... Я перезагрузил систему и по какой-то причине она работает сейчас.Мне интересно, если какой-либо экземпляр процесса из предыдущих вызовов программы мог задержаться в системе.Во всяком случае, теперь я могу выполнять манипуляции, как ожидалось, даже если я не совсем понимаю, что в первую очередь пошло не так.

Спасибо всем, кто нашел время для ответа.

...