【问题标题】:How to create Chrome like application in Delphi which runs multiple processes inside one Window?如何在 Delphi 中创建类似 Chrome 的应用程序,在一个窗口中运行多个进程?
【发布时间】:2009-09-21 15:28:34
【问题描述】:

是否可以创建一个“应用程序组”,它可以在一个窗口下运行,但在不同的进程中,比如在 Chrome 浏览器中?我想将一个应用程序分成多个部分,这样一个崩溃或卡住的进程就不会影响其他进程,但仍保持外观和感觉尽可能接近原始系统。

我知道 Chrome 源是可用的,但有没有为 Delphi 准备好一半的东西?

【问题讨论】:

    标签: windows delphi google-chrome parallel-processing


    【解决方案1】:

    我想基本上你会创建多个进程,每个进程都会创建一个窗口/表单。其中一个进程具有嵌入每个子窗口的主窗口。这就像调用SetParent 一样简单。不同进程中的窗口将使用 IPC(进程间通信)机制(如 named pipes 或窗口消息)相互通信。

    有关在 Delphi 中使用 SetParent 的嵌入示例,请参阅 this question。有关在 Delphi 中使用命名管道的示例,请参阅 this question

    【讨论】:

      【解决方案2】:

      查看HeidiSQLDelphi code。这是一个很好的开源 MySQL 客户端,实现了这种机制。

      阅读 Chrome 发布时发布的这个新闻站点:

      "Google playing catch-up with HeidiSQL?"

      :-)


      (来源:heidisql.com

      【讨论】:

      【解决方案3】:

      Harriv,您可以使用基于plugins 的方案。你有一个主应用程序,它动态加载新闻功能。这里有几个可用的库,我留下一些。

      框架

      教程

      再见。

      【讨论】:

      • 谢谢,但我真的在寻找多处理,而不是插件架构。
      • Lars,使用插件的建议是提交问题的替代方案,因为开发“类似 Chrome 应用程序”的系统涉及高度复杂性,因为“谷歌浏览器”实现了多进程架构除了沙盒、进程管理、渲染隔离(渲染器)等等。
      【解决方案4】:

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

      【讨论】:

      • 不错。使用 SetParent 进行嵌入,使用 .Net Remoting 进行 IPC
      【解决方案5】:

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

      【讨论】:

      • 感谢您的建议,但我正在使用一些需要在主线程中运行的 ActiveX 组件。
      【解决方案6】:

      我不确定 Delphi 是如何运作的,但多进程编程的标准过程是分叉。

      你用你想要的任何代码创建一个新进程。将信息传递给分叉的进程,让它随心所欲地运行。

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

      【讨论】:

      • -1。由于 fork 是一个 Unix 术语,我假设您的意思是“启动另一个进程”的一般意义。在这种情况下,您的回答是“多进程编程正在启动多个进程”,这是一个无益的重言式。此外,“查一下”从来都不是一个有用的答案。请解释多进程编程的工作原理或提供链接(带摘要)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 2015-08-24
      • 1970-01-01
      • 2012-03-27
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多