Как мне манипулировать вводом с клавиатуры в Win32? - PullRequest
0 голосов
/ 16 октября 2011

Или, чтобы уточнить этот вопрос, как я могу заставить Windows думать, что я нажал клавишу, когда я действительно этого не сделал?Я знаю, что мог бы использовать SendMessage и указать входные данные, но тогда только мое приложение получит его?Я хотел бы контролировать все приложения, получающие «фальшивый» ввод.Любой совет?

Ответы [ 2 ]

5 голосов
/ 16 октября 2011

То, что вы описываете, фальшивый ввод, реализуется функцией SendInput .Ввод идет в поток, который имеет фокус ввода.

1 голос
/ 16 октября 2011

Вы можете SendMessage к любому окну, которое вы хотите, даже на других процессах.Вы даже можете использовать HWND_BROADCAST, чтобы отправить его в каждое окно уровня системы.Но это то, что вы действительно хотите?Если вас интересует только конкретная программа, вы можете получить дескриптор ее окна, используя FindWindow , а затем отправить сообщение только этому окну.

Обратите внимание, что если все, что вы хотите сделатьэто простая инъекция клавиш в другой процесс, тогда SendInput действительно путь.Если вы хотите отправить глобальное сочетание клавиш, не имеет значения, кто в фокусе.Если вы хотите отправить один и тот же вход более чем в одно окно, используя SendInput, вам придется циклически перебирать список окон, и для каждого окна сначала установить фокус, а затем отправить вход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...