2012-08-24 96 views

回答

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; 
    } 
} 
+0

如何代碼確保它是一個WPF窗口和窗口不對應於一種形式? – Maanu

+0

它不會對應於Windows窗體...因爲HwndSource只會返回與連接到某些WPF視覺圖像的HWND有關的內容。在示例中,我展示了檢查RootVisual是否爲WPF窗口,因爲這是您要檢查的內容。 –