是否有可能创build一个“应用程序组”,可以在一个窗口下运行,但在单独的进程,如在Chrome浏览器? 我想将一个应用程序分成多个部分,这样一个崩溃或干扰过程不能打倒其他人,但仍然保持尽可能接近原始系统的外观和感觉。
我知道Chrome的源代码是可用的,但是有没有什么东西甚至为Delphi准备了一半呢?
我想基本上你会创建多个进程,每个进程创建一个窗口/窗体。 其中一个进程具有嵌入每个子窗口的主窗口。 这和调用SetParent一样简单。 不同进程中的窗口将使用IPC(进程间通信)机制(如命名管道或窗口消息)相互通信。
在Delphi中使用SetParent的嵌入示例见这个问题 。 在Delphi中使用命名管道的例子见这个问题 。
看看HeidiSQL的Delphi代码 。 这是一个很好的开源MySQL客户端,它实现了这个机制。
阅读Chrome发布时发布的这个newsitem:
“Google跟HeidiSQL打起来了吗?
🙂
HeidiSQL http://www.heidisql.com/images/forum/heidisql-windowlist-2.png
哈里夫,你可以使用基于插件的计划。 你有一个主要的应用程序,这动态加载新闻功能。 有几个图书馆在这里我留下一些。
构架
教程
再见。
看看: http : //blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx 。 该应用程序的源代码是在CSharp中。 我相信你可以适应Delphi。
你可以分开你的应用程序逻辑并在多个线程中执行它。 这样,如果您的应用程序逻辑的一部分挂起,您仍然有一个响应式应用程序。 但是你不能把GUI放在多个线程中。 VCL要求你在主线程中执行所有与GUI相关的东西。
我不确定德尔福如何运作,但是多进程编程的标准程序是分叉的。
你用任何你想要的代码分叉一个新的进程。 将信息传递给分叉进程,并让它按照自己的意愿运行。
在一个线程响应中无法解释多进程编程。 但是看看。