在您自己的应用程序中可视化地包含其他应用

我有四个用Delphi(Win32)编写的小型单一实用程序应用程序,每隔一段时间我都想用一种方式让他们“感觉”,好像它们都是一个应用程序,主要是为了切换回来和他们之间超级简单。 例如,能够将它们作为容器插入到TabSheet中,或者沿着这些线条插入它们将会很棒。

AppControls制作了一个整洁的小组件,它与TForm后代做了类似的事情,允许它们被插入到Delphi应用程序的另一个容器中(参见acEmbeddedForm http://www.appcontrols.com/appcontrols/overview.html这里),但我不认为有任何方法可以用四个独立的应用程序来做到这一点,除非我为了这个最终结果而构build第五个应用程序,并且编译原来的四个应用程序的所有forms

我也可以想象要“包含”或embedded一些其他应用程序(例如,记事本)。

delphi这可能吗? (所有的东西都是可能的… <g>)…如果是这样的话,那会非常困难,需要大量的Windows API熟悉吗?

我在想这些答案可能是肯定的,是的,但希望答案是肯定的,不。 以为我会问,只要确定。 <G>

如果从编程的angular度来看,我在这里做梦,而且这样做比做事更有价值。 任何build议的实用程序之间来回切换标准的三个或四个应用程序之间来回比在Windows中通常更简单?

Solutions Collecting From Web of "在您自己的应用程序中可视化地包含其他应用"

这个其他的SO问题可以提供一些提示。 基本上它说明你使用SetParent 。 你也可以使用FindWindow枚举现有的窗口(比如notepad.exe),并在它们上面调用SetParent来重新引导。

你可以使你的小应用程序进入OLE服务器,并创建一个新的应用程序,在一个主窗体中托管它们。 Delphi很好地支持OLE,所以它应该相当容易,不需要太多的API摆弄。

关于嵌入程序,你不能控制:我怀疑你要做你所描述的东西有很多麻烦,如果甚至有可能(我怀疑的东西),它会依赖于很多低级的API调用和一般的糟糕。

如果你想在某种程度上重构应用程序,你可以将你的四个程序转换成插件,并创建第五个“主机”应用程序,可以加载任何或全部程序。

我建议你看一下JEDI插件系统,可从http://delphi-jedi.org免费获&#x5F97; 。

当我将多个内部应用程序组合成一个应用程序时,我使用“创建第五个应用程序”解决方案,并在其中选择标签。

frmShipRef := TfrmShipRef.Create(self); frmShipRef.Parent := tabShipRef; frmShipRef.BorderStyle := bsNone; frmShipRef.Align := alClient; frmShipRef.Show; 

我只是用选项卡设置一个新的表单,然后用上面的代码创建其他表单。 这工作得很好,只需要一点条件编译,我可以在左侧添加一个面板,它提供了一种“元复制 – 粘贴”的方式,允许他们在他们之间传递数据。

由于所有其他应用程序都是单一形式,因此可以将每个应用程序中的所有组件切割/粘贴/保存到另存为组件模板的 “背景”面板上。 然后,您可以将您的组件模板加载到它自己的PageControl / Tab中。