in C# В настоящее время я хочу добавить событие, которое будет срабатывать при закрытии любого окна (не только окна WPF или форм). Я дошел до этого шага, и это прекрасно работает. Событие SubscribeWindowClose
будет добавлено при запуске другой программы.
Я посмотрел документацию Microsoft о Automation.AddAutomationEventHandler .
В do c было описание о кэшировании элемента AutomationElement, который я не совсем получил.
Я просто хочу сравнить заголовок закрытого окна с заголовками окна, которые у меня есть в списке (List).
Может кто-нибудь помочь мне с этим или показать мне лучший способ решить мою "проблему"?
Заранее спасибо!
Код:
private void SubscribeWindowClose(AutomationElement window) {
Automation.AddAutomationEventHandler(WindowPattern.WindowClosedEvent,
window, TreeScope.Element, OnWindowClose);
}
private void OnWindowClose(object src, AutomationEventArgs e) {
try {
var element = src as AutomationElement;
Debug.WriteLine(element);
if (e.EventId == WindowPattern.WindowClosedEvent) {
// if window title is in List, run method
return;
}
} catch (ElementNotAvailableException) {
return;
}
}