有没有办法强制C#应用程序使用特定版本的MSHTML DLL?
我正在尝试编写一个使用不同版本的IE渲染引擎的应用程序,以帮助网页设计师测试他们的作品,以便向后兼容IE6,IE7等......
据我所知,到目前为止,SHDOCVW DLL“托管”或“运行”MSHTML DLL(http://msdn.microsoft.com/en-us/library/aa741313(VS.85).aspx)。
我已经能够在应用程序表单上创建Microsoft Web浏览器(COM组件版本1.1),方法是将版本6.0.2900.2877 SHDOCVW.DLL拖到Visual C#2008 Express Edition中的工具箱上,以及创建标准WebBrowser。 NET组件希望COM组件使用v6的MSHTML(位于与v6 SHDOCVW DLL相同的文件夹中)...但是两个组件似乎都使用相同的(可能是系统?)版本的MSHTML。
我在XP SP2中使用IE6和XP SP3与IE7运行应用程序。
在使用IE6的SP2中,两个浏览器组件都报告$_SERVER['HTTP_USER_AGENT']
为MSIE 6.0,而在带有IE7的SP3中,两个浏览器组件都报告$_SERVER['HTTP_USER_AGENT']
为MSIE 7.0。
是否有人知道是否可以强制使用特定版本的MSHTML DLL?如果是这样,怎么样?
答案 0 :(得分:1)
您可以使用Type.GetTypeFromProgId
方法来解析您要使用的特定MSHTML版本的ProgId字符串。
然后使用Activator.CreateInstance()
创建Web浏览器控件的实例。
之后,您可以将结果转换为您想要使用的相应接口,如下例所示(遗憾的是,我不知道MSHTML的正确ProgId):
string progId = "MyProgIdValue";
Type type = Type.GetTypeFromProgID(progId);
object mshtml = Activator.CreateInstance(type);
答案 1 :(得分:1)