3

を使用してUIスレッドのアクティブウィンドウを取得しましたGetActiveWindow。WPFポップアップウィンドウの場合は、ウィンドウを閉じる必要があります。

ウィンドウがwpfウィンドウであるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

5

を使用しHwndSourceます。

http://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.fromhwnd.aspx

次のように:

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;
    }
}
于 2012-08-24T09:35:55.113 に答える