Я пытаюсь использовать библиотеку System.Windows.Automation
для выполнения некоторых тестов пользовательского интерфейса и смог добиться определенного прогресса, но я не могу подписаться на событие создания всплывающее окно в моем приложении. Я попытался использовать Automation.AddStructureChangedEventHandler
на корне (рабочий объект), а также на окне, но это не сработало. Я также пробовал использовать разные области, что тоже не помогло.Как подписаться на открытие всплывающего окна в System.Windows.Automation
AutomationElement desktop = AutomationElement.RootElement;
AutomationElement app = desktop
.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty,
"Name of the App", PropertyConditionFlags.IgnoreCase));
ActivateWindow(app);
AutomationElement appWindow = app
.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.ControlTypeProperty,
ControlType.Window));
// Find a button that opens a popup window and click it
AutomationElement button = appWindow
.FindFirst(TreeScope.Children, Condition.TrueCondition)
.FindAll(TreeScope.Children, Condition.TrueCondition)[8];
MoveMouseToAndClick(button);
Automation.AddStructureChangedEventHandler(desktop, TreeScope.Descendants, setupWindowOpen);
В setupWindowOpen
обработчик срабатывает иногда, но, похоже, что происходит в других приложениях, а не мой (я вижу иды Internet Explorer на объекте элемента отправителя). Спасибо заранее.