C# 打开(任何)窗口关闭事件保存窗口标题

C# 打开(任何)窗口关闭事件保存窗口标题,c#,.net,windows,events,window,C#,.net,Windows,Events,Window,在C#中,我当前希望添加一个事件,该事件将在任何窗口关闭时触发(而不仅仅是WPF或forms窗口)。我已经迈出了这一步,效果非常好。当另一个程序启动时,将添加SubscribeWindowClose事件 我看了一下微软的文档,了解了这个问题。 文档中有一个关于缓存AutomationElement的描述,我没有完全理解。 我只想将关闭的窗口标题与列表中的窗口标题进行比较。 谁能帮我解决这个问题,或者给我一个更好的方法来解决我的“问题”? 提前谢谢! 代码: @NetMage的评论是朝着正确方向

在C#中,我当前希望添加一个事件,该事件将在任何窗口关闭时触发(而不仅仅是WPF或forms窗口)。我已经迈出了这一步,效果非常好。当另一个程序启动时,将添加
SubscribeWindowClose
事件

我看了一下微软的文档,了解了这个问题。
文档中有一个关于缓存AutomationElement的描述,我没有完全理解。
我只想将关闭的窗口标题与列表中的窗口标题进行比较。
谁能帮我解决这个问题,或者给我一个更好的方法来解决我的“问题”?
提前谢谢!




代码:


@NetMage的评论是朝着正确方向迈出的一步。
最终得到了的修改版本。

条件被修改为
ControlType.TitleBar
,效果非常好

有一条注释链接到如何将缓存与自动化结合使用,以便您可以检索刚刚关闭的窗口的名称。谢谢@NetMage。这是正确的方向!我最后用了,因为它更合适。非常感谢!:)
     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;
            }
        }