查找WPF窗口的句柄

时间:2009-10-12 18:38:07

标签: wpf window handle

Windows窗体有一个属性win1.Handle,如果我回想一下,它返回主窗口句柄的句柄?

是否有相同的方法来获取WPF窗口的句柄?

我在网上找到了以下代码,

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;

但我不认为这对我有帮助,因为我的应用程序有多个窗口。

谢谢!

4 个答案:

答案 0 :(得分:125)

好吧,不要传递Application.Current.MainWindow,只需将引用传递给您想要的任何窗口:new WindowInteropHelper(this).Handle,依此类推。

答案 1 :(得分:36)

只需将您的窗口与WindowsInteropHelper类一起使用:

// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;

现在,您要求应用程序的主窗口,其中始终有一个。但是,您可以在任何Window上使用相同的技术,前提是它是一个System.Windows.Window派生的Window类。

答案 2 :(得分:4)

你可以使用:

Process.GetCurrentProcess().MainWindowHandle

答案 3 :(得分:3)

如果由于某种原因需要所有应用程序Window的窗口句柄,可以使用Application.Windows属性获取所有Windows,然后使用WindowInteropHandler来获取他们已经证明了他们的手柄。