不确定是否有可能,但是否有一种方法可以在WPF窗口的容器中打开另一个程序(例如记事本),类似于使用WebBrowser控件打开网页?
基本上,我想打开记事本或其他exe文件,但使用xaml/c#代码将其约束在WPF窗口容器内。不确定是否可能?
是的,这是可能的。
您需要做的是:
这些都非常简单。 效果是整个Notepad窗口(或您启动的任何应用程序)看起来和表现得就像它是您的WPF应用程序的一部分。
使用SetParent方法成功实现了这一点。
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hwc, IntPtr hwp);
通过获取WPF窗口的句柄,然后获取exe窗口的句柄,我能够将WPF窗口设置为父窗口,从而模拟嵌入式效果(还关闭了标题栏等)。
从这里得到了帮助:http://channel9.msdn.com/forums/TechOff/250417-Hide-window-caption-in-c/
你不能这样做。
你能够浏览网页的原因是因为IE是使用允许它的架构设计的 - 渲染引擎实际上不是IE可执行文件的一部分,而是一个公开组件的DLL。
通用的可执行文件不是这样工作的,你不能将它们嵌入到你的应用程序中。