Windows窗体有一个属性win1.Handle,如果我回想一下,它返回主窗口句柄的句柄?
是否有相同的方法来获取WPF窗口的句柄?
我在网上找到了以下代码,
IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
但我不认为这对我有帮助,因为我的应用程序有多个窗口。
谢谢!
答案 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
来获取他们已经证明了他们的手柄。