WPF 获取应用的所有窗口

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 获取应用的所有窗口相关的知识,希望对你有一定的参考价值。

原文:WPF 获取应用的所有窗口

本文告诉大家如何获取应用内的所有窗口,无论这些窗口有没显示

在 WPF 可以通过 Application.Current.Windows 列举应用的所有窗口

foreach(Window window in Application.Current.Windows ) 
{
    Console.WriteLine(window.Title);
}

如果需要获取一个线程的窗口,请看代码

        delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);

        [DllImport("user32.dll")]
        static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn,
            IntPtr lParam);

        static IEnumerable<IntPtr> EnumerateProcessWindowHandles(Process process)
        {
            var handleList = new List<IntPtr>();

            foreach (ProcessThread thread in process.Threads)
            {
                EnumThreadWindows(thread.Id,
                    (hWnd, lParam) => { handleList.Add(hWnd); return true; }, IntPtr.Zero);
            }

            return handleList;
        }

WPF 一个空的 WPF 程序有多少个窗口

WPF 内部的5个窗口之 MediaContextNotificationWindow


本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF-%E8%8E%B7%E5%8F%96%E5%BA%94%E7%94%A8%E7%9A%84%E6%89%80%E6%9C%89%E7%AA%97%E5%8F%A3.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,或者前往 CSDN 关注我的主页

技术图片 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

以上是关于WPF 获取应用的所有窗口的主要内容,如果未能解决你的问题,请参考以下文章

WPF获取窗口所有TextBox,批量设置禁用

如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI

如何将窗体窗口的所有者设置为 WPF 窗口?

如何在片段中获取rootview?

从后台进程打开窗口并在 WPF 中从用户那里获取输入

从 WPF 窗口获取 System.Windows.Forms.IWin32Window