Получение событий другого приложения

#c# #.net #winforms #events

#c# #.net #winforms #Мероприятия

Вопрос:

В моем приложении на c # мне нужно определить, когда пользователь нажимает одну из двух кнопок в другом стороннем приложении.

Я могу получить дескриптор приложения, но MainWindowHandle возвращает 0.

Я пытался WndProc , но по какой-то причине событие не сработает в моем приложении.

Как я могу получить / перехватить событие нажатия кнопки из этого приложения в мое?

Комментарии:

1. Это стороннее приложение предоставляет события, которые вы можете подключить? Является ли эта кнопка, используемая в этой третьей стороне, общедоступной для вас? Или даже, по крайней мере, защищено?

2. Можете ли вы внести несколько изменений в стороннюю программу?

3. @user390480: на каком языке и платформе написано стороннее приложение?

4. Я не верю, что кнопки имеют общедоступный доступ. Я не могу изменить приложение. Я думаю, что это написано либо на c , либо, возможно, на версии .NET 2003.

Ответ №1:

Глобальные системные перехваты позволяют приложению перехватывать сообщения Windows, предназначенные для других приложений. Это всегда было сложно реализовать на C #. Этот проект в Codeplex пытается реализовать глобальные системные перехваты путем создания DLL-оболочки на C , которая отправляет сообщения в очередь сообщений приложения для перехвата. Проще говоря, это позволяет реализовать любой тип глобального перехвата Windows из управляемого кода: http://www.codeproject.com/KB/system/WilsonSystemGlobalHooks.aspx