Обход клавиатуры, ввод мышью и пропуск SendInput - PullRequest
1 голос
/ 27 ноября 2009

Я делаю определяемые пользователем ключевые макросы для программы. (Эти макросы ограничены этой программой.)

Я использую TApplicationEvents для записи ключевых сообщений. А затем используйте SendInput для их воспроизведения. Но мне нужно отключить мышь и клавиатуру, чтобы воспроизведение не прерывалось.

Я не могу использовать JournalPlaybackProc и JournalRecordProc, потому что они подчиняются UAC, UIPI в Vista и Win7.

Существует ли простой способ блокировать ввод с клавиатуры и мыши, при этом все еще используя SendInput. (Способ, которому не нужны повышенные привилегии.)

Также мне нужна одна управляющая клавиша, которая останавливает воспроизведение.

EDIT: TControl.Perform не работает, потому что он игнорирует горячие клавиши.

Я думал об использовании зарезервированного куска (биты 25-28) в сообщениях WM_KEY, но в документации Windows говорится, что он зарезервирован и не используется. Какие могут быть последствия.

Ответы [ 2 ]

3 голосов
/ 27 ноября 2009

Если вы хотите, чтобы «искусственный ввод» был ограничен вашим собственным приложением, я бы не использовал SendInput. Если вы используете TApplicationEvents.OnMessage для записи сообщений, я бы добавил флажок «если нет (PlayingBack), затем» в OnMessage при воспроизведении макроса и использовал Form1.Perform

1 голос
/ 28 ноября 2009

Я всегда использовал DLL от AutoIT для отправки нажатий клавиш, а также блокировку клавиатуры и мыши.

Есть одна вещь: AutoIT не может блокировать клавиши Ctrl + Alt + Del.

Проверьте .

НТН

...