2012-03-21 70 views
1

是否可以在.net中創建類似於Chrome的Windows應用程序。是否可以在.net中創建多進程UI?

通過這個我的意思是,每個屏幕/標籤是一個過程。

+0

例如,如果您的意思是每個都帶有自己的瀏覽器的多個選項卡,那麼是的,這是可能的。 – 2012-03-21 06:01:07

+0

@MrWednesday no我的意思是每個窗體/控件(winform或wpf)都在它自己的進程中 – Simon 2012-03-21 06:02:06

回答

1

基本上沒有什麼魔法鉻的劑量。

您需要提供基本UI的主機進程。這個主機進程然後啓動一個子進程,爲每個分離的上下文創建你想要的內容(如chrome中的頁面)。現在,您需要一種方法讓兒童進程與主機進行通信。這可以通過窗口上的命名管道完成。主機創建一個管道,並且可以通過進程參數將該管道名稱處理給子進程。 (如果您打開Process Explorer並查看chrome的子進程,您將看到類似這樣的參數--channel = 6831.059FF640.845232221)

現在您爲每個沒有邊框的子進程添加一個窗口(僅限於簡單的內容)。主機現在需要將所有窗口更改發送給該孩子。所以如果主人移動,孩子也需要實時改正其位置。如果主機得到最小化,孩子也需要最小化等等。如果上下文切換,一個孩子的窗戶變得不可見並且出現。

如果這個孩子死了,你只需要創建一個新的,恢復它的狀態,你就完成了。

chrome場景的一種替代方法是將內容中的所有鼠標和鍵盤交互發送到該子進程,然後在該子進程中執行所有處理和計算並將返回信息發回(通過命名管道)到主機然後劑量渲染。

0

您可以使用Thread創建每個表單,該表單將由該線程保存。但請注意,您無法訪問其他表單控件。

但是,如果你想有一個像申請一個完整的瀏覽器,你必須開發使用Visual C您的應用程序++

0

我不知道,Chrome使用的具體機制。但是,我知道您可以將HWND重新保存到另一個進程中。事實上,我敢打賭,任何使用chrome的技術都可以在.Net中複製一些P/Invoke。

相關問題