如何在 C#/.NET 上实现 ActiveX 文档?(ActiveX 文档可以在 IE 中自己绘制)
更新:我需要一个解决方案来在 IE 窗口中绘制我自己的文档类型(如 MS Word 或 MS Excel 在 IE 中绘制其文档)。
4 回答
为此,您需要深入了解 OLE。
诸如 IOleDocument、IOleInPlaceSite 之类的东西(参见MSDN)。弄清楚客户端需要哪些接口(因为 IE 将是容器并且需要与您的接口实现进行通信),以及通信是如何进行的,例如何时调用什么。这不是火箭科学,但我相信仍然相当多的工作。
查看http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.domdocument.aspx,它是 DOM Document 的 .NET 包装器
我的第一个想法是您可以使用WPF Page,它可以托管在 WPF 窗口或 IE 中。
来自 MSDN:
封装可以导航到 Windows Internet Explorer、NavigationWindow 和 Frame 并由其托管的内容页面。
这是可能的,但很难。糟糕的是缺乏文档……微软对支持这种情况没有兴趣。另一个困难的部分是调试 HTML/DOM 和 ActiveX 控件之间的边界。
对于您正在做的事情,听起来 Silverlight 会是一个更好的选择。它只支持 .Net 的一个子集,但它支持绘制图形。查找文档会容易得多。它将在非 Windows 计算机上运行。
但也许您需要 Silverlight 不具备的功能(例如音频输入支持)。如果是这样的话,有各种不同质量的主题的博客。以下是对我最有帮助的两个:
http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx
http://blog.ianchivers.com/wordpress/?p=22
我确实建议使用 OleView 来检查您生成的类型库,并确保它符合您的期望。您也可以这样做以了解如何将事件属性分解为 get/set 函数,这是我在调试某些场景时必须做的事情。
还要认识到“将调试器附加到进程”与脚本或托管调试的区别。在某些时候,当你认为你已经使用了另一个时,你会附上一个。