WPF在WPF窗口内打开exe程序

不知道这是可能的,但有没有办法打开另一个程序,如在WPF窗口的容器内的记事本? 类似于能够使用webbrowser控件打开网页?

基本上我想打开记事本或其他exe,但保持约束在WPF窗口容器使用XAML / C#代码? 不确定如果可能?

Solutions Collecting From Web of "WPF在WPF窗口内打开exe程序"

对的,这是可能的。

你所要做的就是:

  1. 创建一个WindowsFormsHost并将其添加到您的用户界面中的面板
  2. 使用Process.Start启动进程(如记事本)
  3. 调用process.WaitForInputIdle
  4. 使用process.MainWindowHandle来获得窗口句柄
  5. 调用SetWindowPos将进程窗口设置为HwndHost窗口的坐标和Z顺序
  6. 钩HwndHost和process.MainWindowHandle检测大小的变化,并重复步骤5。

所有这一切都很简单。 效果是整个记事本窗口(或任何你开始的应用程序)出现和行为就像它是你的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。

通用的EXE不能以这种方式工作,并且不能将它们嵌入到应用程序中。