2009-11-20 7 views
0

C# 응용 프로그램이 특정 버전의 MSHTML DLL을 사용하도록 강제 할 수있는 방법이 있습니까? 나는 웹 디자이너 등 IE6, IE7과 이전 버전과의 호환성을 위해 자신의 작품을 테스트하는 데 도움이 IE 렌더링 엔진의 다른 버전을 사용하는 응용 프로그램을 작성하기 위해 노력하고있어C#에서 다른 버전의 MSHTML 사용

... 지금까지 내가 그렇게 이해

지금까지 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 웹 브라우저 (COM 구성 요소 버전 1.1)를 만들 수있었습니다. .NET 구성 요소가 COM 구성 요소가 v6의 MSHTML (v6 SHDOCVW DLL과 동일한 폴더에 있음)을 사용하기를 바랍니다 ... 그러나 두 구성 요소 모두 동일한 MSHTML 버전을 사용하는 것으로 보입니다.

IE7이 설치된 XP SP2와 IE6이 설치된 XP SP3에서 앱을 실행했습니다.

SP2에서 IE6을 사용하는 경우 두 브라우저 구성 요소 모두 $_SERVER['HTTP_USER_AGENT']을 MSIE 6.0으로보고 SP3을 IE7로보고하면 두 브라우저 구성 요소 모두 $_SERVER['HTTP_USER_AGENT']을 MSIE 7.0으로보고합니다.

MSHTML DLL의 특정 버전을 강제로 사용할 수 있는지 누가 알 수 있습니까? 그렇다면 어떻게?

답변

1

코드에 도움이되지 수 하지만이 프로그램은 이미 acomplish 위해 노력하고 무엇을하지

IETester

아래 기압하지만

것 같다
1

Type.GetTypeFromProgId 메서드를 사용하여 사용할 특정 버전의 MSHTML에 대한 ProgId 문자열을 확인할 수 있습니다. 그런 다음 Activator.CreateInstance()을 사용하여 웹 브라우저 컨트롤의 인스턴스를 만듭니다. 당신은 당신이 (불행하게도, 내가 MSHTML의 올바른 PROGID를 모르는) 다음 예에서와 같이, 사용하고자하는 각각의 인터페이스에 결과를 캐스팅 할 수 후 는 :

string progId = "MyProgIdValue"; 
Type type = Type.GetTypeFromProgID(progId); 
object mshtml = Activator.CreateInstance(type); 
관련 문제