0

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

有旧支持(从 .NET 1.0 开始)在 <object> 标记(dllname#controlname)中使用特殊的 classid,但通过实验我发现它只有在 dll 通过 http 提供时才有效,所以我不可能利用。

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

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

有关 MSHTML 的其他问题似乎暗示几乎不可能更改其内置行为,所以我几乎没有希望,这意味着如果有人有解决方案,我会非常高兴。

/P

4

1 回答 1

0

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

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

于 2010-12-17T13:40:45.140 回答