WPF中获取顶层窗体的句柄

原文:WPF中获取顶层窗体的句柄

IntPtr ipWnd=new WindowInteropHelper(this).Handle;



WindowInteropHelper 类

协助 Windows Presentation Foundation (WPF) 与 Win32 代码之间的互操作。


此类的成员允许调用方享有对 Win32 HWND 和 WPF Window 的父 HWND 的内部访问权限。 属性安全检查是通过这些成员执行的。

当您需要基于其 HWND 的更具体的对象时,请使用此类。

示例方案假设您需要在 Win32 应用程序中承载 WPF 对话框。使用该对话框的 WPF 窗口对象初始化 WindowInteropHelper。 然后可以从 Handle 属性获取 WPF 窗口的句柄 (HWND),并使用 Owner 属性指定 WPF 窗口的所有者。 下面的代码示例演示在 Win32 应用程序中承载 WPF 对话框时,如何使用 WindowInteropHelper。 


WindowInteropHelper wih = new WindowInteropHelper(myDialog);
wih.Owner = ownerHwnd;
myDialog.ShowDialog();

此类所支持的另一个方案是从 WPF Window 对象获取 HwndSource 对象。

HwndSource 支持通过 AddHook 方法直接处理 Win32 消息。

通过使用 HwndSourceAddHook 来替代 Window,您仍可以处理在 WPF 中没有等效项或未处理的消息。

使用 Window 源创建一个 WindowInteropHelper,然后对 WindowInteropHelper 调用 Handle 以从 HwndSource 的 HWND 中获取。 


WPF中获取顶层窗体的句柄

上一篇:WPF-2D图形(二)Geometry几何体


下一篇:wpf prism框架(7.2) 配置文件加载Module