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)


За да наблюдавате UI събития в друго приложение, можете да използвате UI Automation. За да разрешите конкретния си проблем, трябва да се абонирате за определено събитие (вижте Абониране за събития за автоматизация на потребителския интерфейс). За да направите това, обадете се на IUIAutomation::AddAutomationEventHandler с UIA_Invoke_InvokedEventId Идентификатор на събитие.

Въпреки че UI Automation може да се използва за решаване на вашия проблем, това е помощна технология, главно за активиране на нуждите от достъпност и автоматизирано тестване на UI.

person IInspectable    schedule 23.02.2014

Можете да използвате или Anonymous или Named Pipes или WCF (Windows Communications Foundation).

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