【发布时间】:2012-05-20 19:50:08
【问题描述】:
我的 WPF 应用程序有多个窗口,我想将其中一些窗口附加到另一个进程的窗口。我的问题是,一旦我附加了我的窗口,它就会变得不可见。
我正在尝试使用以下代码:
public static bool setParentWindow(IntPtr hWndChild, IntPtr hWndNewParent)
{
IntPtr previousParent = SetParent(hWndChild, hWndNewParent);
return (previousParent == null ? false : true);
}
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
setParentWindow(myWindowHwnd, newParentHwnd);
所以,上面的代码成功地附加了窗口,但不幸的是使它不可见。
我这样做的原因是我试图通过为它构建“小部件”来扩展应用程序,我的小部件将挂钩并向用户显示额外信息。
两个窗口都有以下样式:WS_OVERLAPPEDWINDOW、WS_OVERLAPPED、WS_VISIBLE、WS_CLIPSIBLINGS、WS_CLIPCHILDREN。
【问题讨论】:
-
附加窗口是什么意思?涉及到的窗口有哪些窗口样式?
-
@Neil:我已将样式添加到问题的末尾,通过附加我的意思是我希望我的 WPF 窗口成为新窗口的子窗口。
-
将窗口重新设置为其他进程非常困难。我会推荐一个不同的解决方案。
-
@DavidHeffernan:我的窗口要么是孩子,要么只是(对用户)看起来是孩子。反正你知道做后者吗?
-
您可以控制其他应用程序吗?如果是这样,则在该其他应用程序中进行编码。如果不是,那么是什么让您认为您可以将另一个进程窗口和一个 WPF 窗口推送到另一个应用程序中?