有没有办法以编程方式将Windows窗体控件插入到MSHTML(Web浏览器)实例中?

时间:2010-09-23 14:57:05

标签: winforms mshtml web-controls

我有一个通过Windows窗体WebBrowser控件使用嵌入式IE的应用程序。我想在HTML页面中嵌入一些.NET控件。

有一个旧的支持(自.NET 1.0起)在< object>中使用特殊的classid。 tag(dllname #controlname)但是通过实验我发现只有在通过http提供dll时它才有效,所以我无法使用它。

有没有其他方法可以将.NET控件(可能是UserControl子类)添加到加载到嵌入式IE实例中的现有html页面中?

我可以在.NET中编写一个合适的ActiveX控件并使用无注册表的COM来让IE实例化吗?我似乎记得有一篇关于MS提供支持的文章,以便逐步启用VB迁移,但我找不到任何东西。

围绕MSHTML的其他问题似乎暗示改变其内置行为几乎是不可能的,因此我很少有希望,这意味着如果有人有解决方案,我会非常高兴。

/ P

1 个答案:

答案 0 :(得分:0)

我使用Microsoft Interop Forms Toolkit 2.1进行了测试,这使得创建可以作为OCX(可见ActiveX控件)嵌入的UserControl成为可能。注册表编写证明是必要的,因为托管COM组件无法使用无注册表COM设置嵌入所需的OCX标志(这些标志仅适用于本机COM)。 在以编程方式将“object”标记添加到C#mshtml主机中的mshtml之后,我可以访问HtmlObject实例及其@object属性以获取托管的UserControl子类并添加其他子控件。 哦,我确保在32位和64位部分注册控件。

唯一令我困扰的是对注册表的依赖......