Как при использовании SendInput узнать, когда окно получения получило и обработало сообщения? - PullRequest
3 голосов
/ 10 марта 2011

Я использую библиотеку Input Simulator для имитации ввода в другое приложение с использованием C #, для этого используются вызовы API SendInput. Кто-нибудь знает, есть ли способ контролировать очередь сообщений Windows для внешнего приложения, чтобы увидеть, были ли обработаны эти сообщения?

Например, допустим, я хочу отправить нажатия клавиш для слова «Hello» в блокнот, но я не хочу, чтобы мое приложение продолжалось до тех пор, пока блокнот не получит и не обработает ввод, и слово «Hello» не появилось в окно блокнота. Мы узнаем, что это произошло, как только сообщения о нажатии клавиш больше не будут находиться в очереди сообщений для блокнота, но я не могу понять, как это выяснить.

Я использовал класс .NET SendKeys и SendWait, но это кажется нестабильным и вызывает случайные зависания во внешнем приложении, поэтому после нескольких недель попыток исправить это я ищу новый метод.

Большое спасибо

1 Ответ

2 голосов
/ 10 марта 2011

Вы не можете.Вызов SendInput в конечном итоге приводит к отправке сообщений, которые доставляются асинхронно.

Зачем поддельный ввод в Блокнот, когда вы можете отправить текст прямо в окно редактирования?Это было бы не только проще, но и надежнее и синхроннее.

...