2012-03-21 3 views
1

chromeに似たWindowsアプリケーションを.netで作成することは可能ですか?.netでマルチプロセスUIを作成することはできますか?

これは、各画面/タブがプロセスであることを意味しています。

+0

複数のタブにそれぞれ独自のブラウザがある場合は、これが可能です。 –

+0

@MrWednesdayいいえ各フォーム/コントロール(winformまたはwpf)が独自のプロセスでホストされている – Simon

答えて

1

基本的に、クロム線量には魔法はありません。

基本的なUIを提供するホストプロセスが必要です。このホストプロセスは、分離されたコンテキストごとに(クロムのページのように)子プロセスを起動します。これで、子プロセスがホストと通信できるようにする必要があります。これは、ウィンドウ上の名前付きパイプで行うことができます。ホストはパイプを作成し、プロセス引数を介してそのパイプ名を子プロセスに渡すことができます。 (プロセスエクスプローラを開いてchromeの子プロセスを見ると、このような引数が表示されます--channel = 6831.059FF640.845232221)

今度は、境界を持たない各子プロセスにウィンドウを追加します平易なコンテンツ)。ホストは、すべてのウィンドウの変更をその子に送信する必要があります。ホストが動くと、子供はその位置をリアルタイムで修正する必要があります。ホストが最小化されると、子供は最小化するなどの必要もあります。コンテキストが切り替わると、1つの子ウィンドウが見えなくなり、1つの子ウィンドウが表示されます。

子供が死亡した場合は、新しい子を作成してその状態を復元すれば完了です。

クロムのシナリオの代替案は、コンテンツ内のすべてのマウスとキーボードのやりとりをその子プロセスに送信し、その子プロセスですべての処理と計算を行い、(名前付きパイプを介して)レンディング情報をそのホストはレンダリングを行う。

0

フォームはそれぞれThreadを使用して作成でき、そのフォームはそのスレッドによって保持されます。ただし、他のフォームコントロールにアクセスすることはできません。

しかし、あなたはアプリケーションのような完全なChromeを持つようにしたい場合は、Visual Cを使用してアプリケーションを開発する必要があり++

0

私は、用途をクロム、特定のメカニズムを知りません。しかし、私はHWNDを別のプロセスに再親和させることができることを知っています。実際には、私はクロムが使用する技術は、P/Invokeのビットを使って.Netに複製することができる良いお金を賭けるだろう。

関連する問題