C# 确定活动窗口是否为WPF窗口
我用C# 确定活动窗口是否为WPF窗口,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我用GetActiveWindow获得了UI线程的活动窗口。如果是WPF弹出窗口,我需要关闭窗口 如何确定该窗口是否为wpf窗口?使用HwndSource 详情如下: IntPtr hwnd = GetActivewWindow(); HwndSource hwndsrc = HwndSource.FromHwnd(hwnd); // Use any variation on this code if (hwndsrc != null && hwndsrc.RootVis
GetActiveWindow
获得了UI线程的活动窗口。如果是WPF弹出窗口,我需要关闭窗口
如何确定该窗口是否为wpf窗口?使用
HwndSource
详情如下:
IntPtr hwnd = GetActivewWindow();
HwndSource hwndsrc = HwndSource.FromHwnd(hwnd);
// Use any variation on this code
if (hwndsrc != null && hwndsrc.RootVisual != null)
{
Window window = hwndsrc.RootVisual as Window;
if (window != null)
{
window.Close();
}
// UPDATE: I've added looking for a "Popup" window as well
// because your question mentions "pop up window"...but
// not sure if you meant a top-level Window, or a Popup...
// ....Popup windows have HWND too!
Popup popupwindow = hwndsrc.RootVisual as Popup;
if (popupwindow != null)
{
popupwindow.IsOpen = false;
}
}
代码如何确保它是一个WPF窗口,而该窗口不对应于一个窗体?它不会对应于一个Windows窗体…因为HwnSource只会在它与一个连接到某些WPF视觉效果的HWND一起时返回某些内容。在这个示例中,我展示了如何检查RootVisual是否是WPF窗口,因为这是您要检查的内容。