의 경로 속성에서 찾습니다 MSHTML 어셈블리 참조를 선택하고 문제가 나타납니다 :
C : GAC \ \ \ WINDOWS \ 어셈블리 Microsoft.mshtml에 7.0 \를 .3300.0__b03f5f7f11d50a3a \ Microsoft.mshtml.dll
이것은 VS가 설치 한 모든 프로그래머의 컴퓨터에 설치되어있는 MSHTML 형식 라이브러리에 대한 PIA입니다. 버전 7.0.3300은 .NET 1.0 시대의 버전 번호로 14 세입니다. 물론 IE11을 예측하기 때문에 최신 인터페이스 유형이 없습니다. PIA를 사용하는 것은 결코 잘못된 일은 아니며, IE6의 모든 버전에서 프로그램이 실행되도록 보장합니다.
하지만 원하는 것은 아니며, IE11 유형 라이브러리에서 직접 interop 라이브러리를 생성해야합니다. 프로젝트 디렉토리로 이동, Visual Studio 명령 프롬프트를 실행하고 입력이 명령을 :
이
Tlbimp c:\windows\system32\mshtml.tlb /out:Interop.mshtml.dll
그것은 아주 잠시 동안 바퀴가 달린 것
, 그것은 큰 하나이며, PIA가 있고 여러 것에 대해 몇 가지 경고를 뱉어 .NET 프로그램에서 직접 사용할 수없는 모호한 메서드 및 형식 당신은 그들을 무시할 수 있습니다, 그들은 PIA에서 일하지 않았습니다.
이제 프로젝트 디렉터리에 Interop.mshtml.dll 파일이 있습니다. VS로 돌아가서 이전 MSHTML 참조를 삭제하고 Project> Add Reference> Browse를 사용하여 방금 생성 한 새 참조를 선택합니다. "Embed Interop Types"속성은 기본적으로 True이며 더 이상 PIA가 필요하지 않으며 프로그램과 함께 파일을 배포 할 필요가 없습니다. 파일을 소스 컨트롤로 검사하면 한 번만 수행하면됩니다.
IE의 필수 버전이 설치되지 않은 컴퓨터에서 실행될 때 E_NOINTERFACE 예외로 프로그램이 종료 될 수 있습니다. as
연산자를 사용하여 IHtmlDocument7에 대한 문서 참조를 캐스팅 할 수 있습니다. IE가 오래되면 null이됩니다.
감사합니다.) 가능한 HTMLElement IHTMLElement 변환 또는 다른 질문을 만들 필요가 있습니까? – askeet