Отправка текста / нажатий клавиш в невыбранное окно? - PullRequest
5 голосов
/ 05 марта 2011

Есть ли способ отправить нажатия клавиш в окно, которое в данный момент не выбрано в C ++? Например, если у меня свернуто окно блокнота и я хочу, чтобы в нем печатался какой-то текст, не выводя окно вперед.

Я использую 64-разрядную версию Windows 7.

Ответы [ 2 ]

6 голосов
/ 06 марта 2011

Фальсифицировать ввод довольно сложно, в общем смысле без использования SendInput().

Да, вы можете попробовать PostMessage(), но ответ от eznme в лучшем случае вводит в заблуждениекогда речь идет о SendMessage.Как я и другие, похоже, говорим здесь много раз в день, входные данные отправляются в очередь сообщений, а не отправляются в дескриптор окна.

Все это говорит, если вы не хотите отдавать Блокнотокно ввода фокуса, тогда будет трудно получить текст, притворяясь.Очень простая альтернатива, которая работает лучше и проще в использовании, - это найти дескриптор окна окна «Блокнот» EDIT и использовать, например, WM_GETTEXT и WM_SETTEXT, чтобы напрямую изменить его содержимое.

На самом деле существует огромное множество доступных функций как только вы получите этот дескриптор окна на ваше усмотрение!

4 голосов
/ 05 марта 2011

Абсолютно: посмотрите PostMessage () и SendMessage (), они являются частью Windows API:

http://msdn.microsoft.com/en-us/library/ms644944%28VS.85%29.aspx

http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx

В частности, вы, вероятно, хотите отправить WM_KEYUP

http://msdn.microsoft.com/en-us/library/ms646281%28VS.85%29.aspx

...