2009-09-21 16 views
14

1つのウィンドウで実行する「アプリケーショングループ」を作成することはできますが、Chromeブラウザのような別のプロセスで行うことはできますか?私は1つのアプリケーションを複数の部分に分割して、1つのクラッシュまたは妨害プロセスが他のものを取り除くことはできないが、元のシステムにできるだけ近い外観と感触を保つようにしたい。1つのウィンドウ内で複数のプロセスを実行するDelphiでChromeのようなアプリケーションを作成するにはどうすればよいですか?

私はChromeのソースが利用可能であることは知っていますが、Delphiの半分の準備ができていますか?

答えて

6

私は基本的に、それぞれがウィンドウ/フォームを作成する複数のプロセスを作成すると思います。プロセスの1つに、すべての子ウィンドウが埋め込まれたマスターウィンドウがあります。それはSetParentと同じくらい簡単です。異なるプロセスのウィンドウは、named pipesやウィンドウメッセージのようなIPC(プロセス間通信)メカニズムを使用して互いに話し合います。

DelphiでSetParentを使用する埋め込み例については、this questionを参照してください。 Delphiで名前付きパイプを使用する例については、this questionを参照してください。

-1

アプリケーションロジックを分離して、複数のスレッドで実行できます。そうすれば、アプリケーションロジックの一部がハングアップしても、応答性の高いアプリケーションが得られます。しかし、GUIを複数のスレッドに配置することはできません。 VCLでは、メインスレッドでGUI関連のものをすべて実行する必要があります。

+0

ありがとう、私はメインスレッドで実行する必要がありますいくつかのActiveXコンポーネントを使用しています。 – Harriv

4

Harrivでは、pluginsに基づくスキームを使用できます。主なアプリケーションを持っていて、動的にニュース機能をロードします。私はいくつか残してここにいくつかのライブラリがあります。

alt text

フレームワーク

01から
  • TMS Plugin Framework
  • TJvPluginManagerの

    チュートリアル

    さようなら。

  • +1

    これらのフレームワークはアウトプロセスのGUIプラグインをサポートしていますか? –

    +0

    ありがとうございますが、私は本当にマルチプロセッシングで、プラグインアーキテクチャではありません。 – Harriv

    +0

    Larsは、「Google Chrome」がサンドボックス化、プロセス管理の他にマルチプロセスアーキテクチャを実装しているため、「Chromeアプリケーションのような」システムの開発に複雑さが伴うため、問題の提出先の代わりにプラグインを使用するという提案があります、レンダリングされたレンダリング(レンダリング)などがあります。興味深いもの: – RRUZ

    7

    Delphi codeHeidiSQLにしてください。これは、このメカニズムを実装する素晴らしいオープンソースのMySQLクライアントです。

    クロムがリリースされたときに投稿されました。このNewsItemの読み:私はDelphiがどのように動作するかわからないですが、マルチのための標準的な手順

    HeidiSQL http://www.heidisql.com/images/forum/heidisql-windowlist-2.png

    +1

    IPC用に共有メモリーマップファイルを使用します。 http://heidisql.googlecode.com/svn/trunk/source/synchronization.pas –

    +1

    とhttp://heidisql.googlecode.com/svn/trunk/source/communication.pasのWM_COPYDATAを参照してください –

    +1

    +1これは素晴らしいです応用 。 mutex yクリティカルセクションに基づくスキーマを使用します。 – RRUZ

    -5

    :-)

    "Google playing catch-up with HeidiSQL?"

    をプログラミングはフォークしている。

    任意のコードで新しいプロセスをフォークします。フォークされたプロセスに情報を渡し、必要なものを実行させます。

    1つのスレッドの応答でマルチプロセスプログラミングを説明できません。しかし、それを見てください。

    +2

    -1。 * fork *はUnix用語であるため、「別のプロセスを開始する」という一般的な意味で使用しています。その場合は、「マルチプロセスプログラミングは複数のプロセスを開始しています」と答えるのは、役に立たないトートロジーです。また、 "look it up"は決して役に立たない答えです。マルチプロセスプログラミングのしくみやリンクの提供方法について説明してください。 –

    関連する問題