是否可以在.net中创建多进程UI?

时间:2012-03-21 05:58:48

标签: .net

是否可以在.net中创建类似于chrome的Windows应用程序。

我的意思是每个屏幕/标签都是一个过程。

3 个答案:

答案 0 :(得分:1)

基本上铬剂量没有魔力。

您需要一个提供基本UI的主机进程。然后,此宿主进程为您拥有的每个单独的上下文启动子进程(如chrome中的页面)。现在,您需要一种让子进程与主机进行通信的方法。这可以通过Windows上的命名管道来完成。主机创建一个管道,并可以通过process参数处理该子管名。 (如果您打开Process Explorer并查看chrome的子进程,您将看到如下参数--channel = 6831.059FF640.845232221)

现在,您为每个没有边框的子进程添加一个窗口(仅限普通内容)。主机现在需要将所有窗口更改发送给该子项。因此,如果主持人移动,孩子也需要实时纠正其位置。如果主机被最小化,则孩子也需要最小化等。如果切换上下文,则一个子窗口变得不可见并且出现一个子窗口。

如果那个孩子死了,你只需要创建一个新孩子,恢复它的状态就可以了。

chrome方案的另一种选择是将内容中的所有鼠标和键盘交互发送到该子进程,然后在该子进程中执行所有处理和计算,并将结束信息(通过命名管道)发送回主持人,然后给予渲染。

答案 1 :(得分:0)

您可以使用Thread创建每个表单,该表单将由该主题保留。但请注意,您无法访问其他表单控件。

但是如果你想拥有一个完整的Chrome应用程序,你必须使用Visual C ++开发你的应用程序

答案 2 :(得分:0)

我不知道chrome使用的具体机制。但是,我知道您可以将HWND重新声明为另一个进程。实际上,我敢打赌,Chrome使用的任何技术都可以在.Net中复制一些P / Invoke。