获取所有打开的WPF窗口

我试图让所有打开的窗口。 我试图使用System.Windows.Application.Current.Windows但我得到空指针exception在foreach循环行。 有谁知道什么是错的?

 public Window getWindow(String Title) { Window windowObject = null; Console.WriteLine("Inside getWindow"); foreach (Window window in System.Windows.Application.Current.Windows) { if (window.Title == Title) { windowObject = window; } } return windowObject; } 

CurrentWindowsnull

Windows属性只能从创建Application对象的线程访问,并且只能在创建应用程序对象之后的WPF应用程序中使用。

请记住,System.Windows是一个命名空间,Application是引用当前应用程序上下文的实际类。 这意味着'Application.Current.Windows'只引用应用程序本身产生的所有窗口。 尝试遍历所有窗口并打印标题。

在你的程序中会发生什么,if语句总是为false,除非Title等于Application生成的窗口,因此windowObject将保持为null,并且方法返回null。

这是如何循环在WPF中运行的应用程序中打开的所有窗口:

 foreach (var Window in App.Current.Windows) { // TODO: write what you want here } 

如果你想知道在windowforms使用应用程序,而不是应用程序。 再见。