是否可以创建一个“应用程序组”,在一个窗口下运行,但在单独的进程中,如在Chrome浏览器?我想将一个应用程序分为多个部分,这样一个崩溃或干扰进程就不能打倒其他人,但仍然保持外观和感觉尽可能接近原始系统。我知道Chrome源代码是可用的,但是有没有为Delphi准备好的东西呢?
gwbalxhn1#
我猜基本上你会创建多个进程,每个进程创建一个窗口/表单。其中一个进程有一个主窗口,每个子窗口都嵌入其中。这就像调用SetParent一样简单。不同进程中的窗口将使用IPC(进程间通信)机制(如named pipes或窗口消息)相互通信。有关在Delphi中使用SetParent的嵌入示例,请参见this question。有关在Delphi中使用命名管道的示例,请参见this question。
bfrts1fy2#
看看HeidiSQL的Delphi code,它是一个很棒的开源MySQL客户端,实现了这个机制。阅读Chrome发布时发布的新闻:"Google playing catch-up with HeidiSQL?":—)
(来源:heidisql.com)
x8goxv8g3#
请看:http://blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx。该应用程序的源代码是在CSharp。我相信你可以适应它的Delphi。
vom3gejh4#
Harriv,你可以使用一个基于plugins的方案,这里你有一个主应用程序和动态加载新闻的功能。这里有几个可用的库,我留下一些。
(来源:wikimedia.org)
再见。
r6hnlfcb5#
你可以把你的应用程序逻辑分开,在几个线程中执行。这样,如果你的应用程序逻辑的一部分挂起,你仍然有一个响应的应用程序。但是你不能把GUI放在多个线程中。VCL要求你在主线程中执行所有与GUI相关的东西。
v09wglhw6#
我不知道Delphi是如何操作的,但是多进程编程的标准过程是分叉的。你用你想要的任何代码派生一个新进程。把信息传递给被派生的进程,让它做它想做的任何事情。不能用一个线程响应来解释多进程编程,但是可以查一下。
6条答案
按热度按时间gwbalxhn1#
我猜基本上你会创建多个进程,每个进程创建一个窗口/表单。其中一个进程有一个主窗口,每个子窗口都嵌入其中。这就像调用SetParent一样简单。不同进程中的窗口将使用IPC(进程间通信)机制(如named pipes或窗口消息)相互通信。
有关在Delphi中使用SetParent的嵌入示例,请参见this question。有关在Delphi中使用命名管道的示例,请参见this question。
bfrts1fy2#
看看HeidiSQL的Delphi code,它是一个很棒的开源MySQL客户端,实现了这个机制。
阅读Chrome发布时发布的新闻:
"Google playing catch-up with HeidiSQL?"
:—)
(来源:heidisql.com)
x8goxv8g3#
请看:http://blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx。该应用程序的源代码是在CSharp。我相信你可以适应它的Delphi。
vom3gejh4#
Harriv,你可以使用一个基于plugins的方案,这里你有一个主应用程序和动态加载新闻的功能。这里有几个可用的库,我留下一些。
(来源:wikimedia.org)
再见。
r6hnlfcb5#
你可以把你的应用程序逻辑分开,在几个线程中执行。这样,如果你的应用程序逻辑的一部分挂起,你仍然有一个响应的应用程序。但是你不能把GUI放在多个线程中。VCL要求你在主线程中执行所有与GUI相关的东西。
v09wglhw6#
我不知道Delphi是如何操作的,但是多进程编程的标准过程是分叉的。
你用你想要的任何代码派生一个新进程。把信息传递给被派生的进程,让它做它想做的任何事情。
不能用一个线程响应来解释多进程编程,但是可以查一下。