Прямая отправка нажатий клавиш другому процессу через перехват

Мне интересно, после того, как я возился со всеми видами проблем с SendInput, SendKeys, PostMessage, SendMessage, SendNotifyMessage, событием keybd _и т. д. и т. д.. Чтобы найти это хорошо... попытка отправить ввод с клавиатуры другому процессу, не являющемуся -передним планом, довольно привередлива и ненадежна.

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

Я пробовал разные комбинации SendMessage и PostMessage. Один для вниз, один для вверх, так как использование как для вниз, так и для вверх приводит к проблемам, как с PostMessage для обоих, вызывая дублирование ключа в принимающем окне. или SendMessage для обоих, что вызывало проблемы с вводом текста, но другие функции работали нормально. SendMessage для keydown и PostMessage для keyUp работали для всех функций, но уровень надежности резко упал, а также увеличилась задержка в ключевых событиях. Только комбинация PostMessage для keydown и SendMessage для keyup смогла сделать что-то полезное, с вероятностью 5 -10% отказов при регистрации keyup. То же самое касается SentNotifyMessage (, который ведет себя в основном так же, как SendMessage, в отношении надежности ).

Итак, по существу, я на грани, и я хотел знать о прямом внедрении ловушки в целевое окно,и делать некоторые вуду, чтобы отправлять нажатия клавиш таким образом, минуя очередь сообщений и т. д. Делая это таким образом, чтобы не вызывать глобальные ключевые события и влиять только на целевое окно. Единственное, я довольно невежественен, когда дело доходит до инъекций/подсадок и т. д. Так что я обращаюсь к вам, сообщество.

Что делать?

19
задан Hydra 2 May 2012 в 04:32
поделиться