如何在一个窗口内运行多个进程的Delphi中创build类似于Chrome的应用程序?

是否有可能创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

哈里夫,你可以使用基于插件的计划。 你有一个主要的应用程序,这动态加载新闻功能。 有几个图书馆在这里我留下一些。

替代文字

构架

  • TMS插件框架
  • 来自JVCL的 TJvPluginManager
  • Delphi插件框架
  • 水润

教程

  • 实现Delphi应用程序的插件
  • 如何为您的应用程序制作一个插件 (源代码)

再见。

看看: http : //blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx 。 该应用程序的源代码是在CSharp中。 我相信你可以适应Delphi。

你可以分开你的应用程序逻辑并在多个线程中执行它。 这样,如果您的应用程序逻辑的一部分挂起,您仍然有一个响应式应用程序。 但是你不能把GUI放在多个线程中。 VCL要求你在主线程中执行所有与GUI相关的东西。

我不确定德尔福如何运作,但是多进程编程的标准程序是分叉的。

你用任何你想要的代码分叉一个新的进程。 将信息传递给分叉进程,并让它按照自己的意愿运行。

在一个线程响应中无法解释多进程编程。 但是看看。