我在旧项目中遇到AxShDocVW.dll问题,所以为了重新创建问题,我创建了一个新的VB.Net表单项目并将WebBrowser控件放入其中。我注意到我的旧项目中的References包含ShDocVw但不包含AxShDocVw。此外,当我从旧项目中复制以下行时,它(自然地)无法识别它。
Dim WithEvents MyWebBrowserMain As New AxSHDocVw.AxWebBrowser
通过网络上的一堆页面阅读,我得到的结论是AxShDocVw.AxWebBrowser已被弃用。这是真的?如果是这样,还有什么选择呢?
另外,我能够做到:
Dim WithEvents MyWebBrowserMain As New SHDocVw.WebBrowser
但是这有例子,我不能再做MyWebBrowserMain.Location = New Point(...
我也发现:
Dim WithEvents MyWebBrowserMain As New System.Windows.Forms.WebBrowser
但这是正确的方法吗?我很困惑!!
感谢名单, 阿尼尔
答案 0 :(得分:4)
没有正确的方法......取决于您打算如何处理类型库
AxSHDocVw:从aximp或Visual Studio的Windows窗体工具箱生成的COM代理包装器dll,使用旧的IE类型库(IE7从IEFramed.dll公开AxWebBrowser,而不是SHDocVw)。适用于Windows窗体应用程序。
SHDocVw:使用旧的IE类型库从tlbimp或“添加引用”对话框的COM选项卡生成的COM代理包装器DLL。
如果你使用Windows Forms,你应该使用System.Windows.Forms.WebBrowser如果你的目标框架是2.0或更高,除非扩展点的数量不满足你的需要,那么你需要直接托管ActiveX版本
如果您的Visual Studio安装正确,并且您添加了对IE类型库的新引用,则您的COM引用可能已更改为使用Microsoft的PIA microsoft.mshtml.dll。 Using this reference on IE6 machines is not recommended.