在自己的程序中运行任何程序作为停靠窗口

时间:2017-08-10 15:58:59

标签: c# wpf winapi docking

场合

标题可能令人困惑,但我正在开展一个项目,我需要在自己的程序中运行任何程序。关于此问题有一个主题Here

问题

This解决方案正在使用win32 API并将程序附加到面板句柄。我做了一个调整,使其在WPF中工作,它不支持在控件上调用句柄。

这段代码将在我自己的程序中启动notepad.exe。我的想法是把它放在我的程序中。

 [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

 Process p = Process.Start("notepad.exe");
 HwndSource source = (HwndSource)HwndSource.FromVisual(DockPanel);
 SetParent(p.MainWindowHandle, source.Handle);

但是现在由于某种原因,我用上述方法打开的程序可以漂浮在我的程序的边界。相反,我只希望它能够停靠以填充孔码头面板。而不是摆脱它。

问题

我如何使用边界,以便在我的程序中打开的程序将完全停靠在我的停靠面板中,而不是移出它。如果没有使用停靠面板的方法,这不是问题。

它应该是什么样的

enter image description here

现在看起来像什么

enter image description here

0 个答案:

没有答案