Как я могу создать приложение Windows, которое перехватывает и передает нажатия клавиш и щелчки мыши другим приложениям ?

Я работаю с заказчиком, который хочет добавить функциональность в унаследованное приложение. Приложение, производитель которого бесполезен, имеет пользовательский интерфейс Windows Forms. Мой клиент хочет, чтобы определенные функции вне этого приложения запускались, когда пользователь нажимает на часть информации в приложении.

Я видел простую версию этого, выполненную для другого клиента. В этом случае есть приложение, состоящее из формы, которая была установлена ​​в самое верхнее окно с помощью SetWindowPos . Когда пользователь нажимает кнопку в этой форме, приложение находит окно для устаревшего приложения и получает информацию из заголовка окна. Это неэлегантно - есть плавающая кнопка, которая никогда не исчезает, даже если устаревшее приложение не открыто, но она работает.

Мне было интересно, можно ли сделать что-то подобное, используя прозрачное окно WPF без полей с набором свойств Topmost . Приложение, о котором я думаю, будет анализировать содержимое в окне устаревшего приложения и определять список горячих точек. Он будет перехватывать и обрабатывать любой щелчок мыши в точке доступа и передавать все оставшиеся щелчки мыши в устаревшее приложение.

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

Если это действительно жизнеспособный проект, то что? лучший способ сделать это? Какие неожиданные проблемы мне следует искать?

5
задан Robert Rossney 20 April 2011 в 18:32
поделиться