C# При (любом) событии закрытия окна сохранить заголовок окна - PullRequest
0 голосов
/ 30 января 2020

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;
            }
        }

1 Ответ

0 голосов
/ 31 января 2020

Комментарий @NetMage был шагом в правильном направлении.
Закончился измененной версией этот пример .
Условие было изменено на ControlType.TitleBar и работало как шарм !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...