2012-03-21 25 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。

相关问题