c# определить, какая кнопка окна сообщений (созданная в другом приложении) была нажата

Другое приложение отображает окно сообщения (с уникальным текстом внутри), пользователь выбирает Да/Нет. Как определить, что он нажал в c#? (лучше всего в .Net до 3.5). Я мог бы провести опрос с помощью FindWindowEx (в другом потоке), но как определить, какая кнопка была нажата? Также я не думаю, что опрос — лучший способ выполнить работу.

Мне нужно знать, что пользователь выбрал в другом приложении, чтобы я мог соответствующим образом отреагировать в своем собственном приложении. У меня нет доступа к исходному коду другого приложения. Также, чтобы было ясно, я не хочу сам нажимать ни одну из кнопок. Я не боюсь немного c++, winapi и pinvoke


person Firkraag    schedule 23.02.2014    source источник
comment
Не похоже, что это будет очень легко. И уж точно не из C#. Это собирается нуждаться в некоторой зацепке. Какова основная проблема, стоящая за этим необычным требованием?   -  person David Heffernan    schedule 23.02.2014


Ответы (2)


Чтобы отслеживать события пользовательского интерфейса в другом приложении, вы можете использовать автоматизацию пользовательского интерфейса. Для решения конкретной проблемы вам необходимо подписаться на определенное событие (см. Подписка на события автоматизации пользовательского интерфейса). Для этого вызовите IUIAutomation::AddAutomationEventHandler с UIA_Invoke_InvokedEventId Идентификатор события.

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

person IInspectable    schedule 23.02.2014

Вы можете использовать анонимные или именованные каналы или WCF (Windows Communications Foundation).

person Labris    schedule 23.02.2014
comment
У меня нет доступа к исходному коду другого приложения. - person Firkraag; 23.02.2014