0

有什么方法可以强制 C# 应用程序使用特定版本的 MSHTML DLL?

我正在尝试编写一个使用不同版本的 IE 渲染引擎的应用程序,以帮助网页设计师测试他们的创作是否与 IE6、IE7 等向后兼容...

据我所知,SHDOCVW DLL“托管”或“运行”MSHTML DLL(http://msdn.microsoft.com/en-us/library/aa741313 (VS.85).aspx )。

通过将版本 6.0.2900.2877 SHDOCVW.DLL 拖到 Visual C# 2008 Express Edition 的工具箱上,我已经能够在应用程序表单上创建 Microsoft Web 浏览器(COM 组件版本 1.1),并在希望 COM 组件将使用 MSHTML 的 v6(与 v6 SHDOCVW DLL 位于同一文件夹中)......但是两个组件似乎都使用相同的(可能是系统?)版本的 MSHTML。

我已经在带有 IE6 的 XP SP2 和带有 IE7 的 XP SP3 中运行了该应用程序。

在带有 IE6 的 SP2 中,两个浏览器组件都报告$_SERVER['HTTP_USER_AGENT']为 MSIE 6.0,而在带有 IE7 的 SP3 中,两个浏览器组件都报告$_SERVER['HTTP_USER_AGENT']为 MSIE 7.0。

有谁知道是否可以强制使用特定版本的 MSHTML DLL?如果是这样,怎么办?

4

2 回答 2

1

您可以使用该Type.GetTypeFromProgId方法来解析您要使用的特定版本的 MSHTML 的 ProgId 字符串。然后使用Activator.CreateInstance()创建 Web 浏览器控件的实例。之后,您可以将结果转换为您要使用的相应界面,如下例所示(不幸的是,我不知道 MSHTML 的正确 ProgId):

string progId = "MyProgIdValue";
Type type = Type.GetTypeFromProgID(progId);
object mshtml = Activator.CreateInstance(type);
于 2009-11-20T14:04:16.180 回答
1

无法帮助编写代码,但这个程序已经完成了你想要完成的事情

IETest

似乎是在atm虽然

于 2009-11-20T14:38:58.283 回答