windows 如何在Delphi中创建类似Chrome的应用程序,在一个窗口中运行多个进程?

plupiseo  于 2023-02-05  发布在  Windows
关注(0)|答案(6)|浏览(206)

是否可以创建一个“应用程序组”,在一个窗口下运行,但在单独的进程中,如在Chrome浏览器?我想将一个应用程序分为多个部分,这样一个崩溃或干扰进程就不能打倒其他人,但仍然保持外观和感觉尽可能接近原始系统。
我知道Chrome源代码是可用的,但是有没有为Delphi准备好的东西呢?

gwbalxhn

gwbalxhn1#

我猜基本上你会创建多个进程,每个进程创建一个窗口/表单。其中一个进程有一个主窗口,每个子窗口都嵌入其中。这就像调用SetParent一样简单。不同进程中的窗口将使用IPC(进程间通信)机制(如named pipes或窗口消息)相互通信。
有关在Delphi中使用SetParent的嵌入示例,请参见this question。有关在Delphi中使用命名管道的示例,请参见this question

bfrts1fy

bfrts1fy2#

看看HeidiSQLDelphi code,它是一个很棒的开源MySQL客户端,实现了这个机制。
阅读Chrome发布时发布的新闻:
"Google playing catch-up with HeidiSQL?"
:—)

(来源:heidisql.com

vom3gejh

vom3gejh4#

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

(来源:wikimedia.org

再见。

r6hnlfcb

r6hnlfcb5#

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

v09wglhw

v09wglhw6#

我不知道Delphi是如何操作的,但是多进程编程的标准过程是分叉的。
你用你想要的任何代码派生一个新进程。把信息传递给被派生的进程,让它做它想做的任何事情。
不能用一个线程响应来解释多进程编程,但是可以查一下。

相关问题