Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定活动窗口是否为WPF窗口_C#_.net_Wpf_Winforms - Fatal编程技术网

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窗口,因为这是您要检查的内容。