2011-03-07 3 views
20

저는 Visual Studio 2010 C# IDE를 사용하기 시작했습니다.IHTMLScriptElement는 어디에 있습니까?

나는 웹 브라우저 구성 요소에 자바 스크립트를 삽입하는 것을 시도하고 유래의 대답은 다음 해요 : 말 IHTMLScriptElement

How to inject Javascript in WebBrowser control?

HtmlElement txtBox = webBrowser1.Document.GetElementById("UserEmailShortcut"); 
//js 
HtmlElement scriptOne = webBrowser1.Document.CreateElement("script"); 
IHTMLScriptElement element = (IHTMLScriptElement)scriptOne.DomElement; 
element.text = "function sayHello() { alert('hello') }"; 
txtBox.AppendChild(scriptOne); 
webBrowser1.Document.InvokeScript("sayHello"); 

이제 빨간색 물결 선이 에서이를 :

Error 1 The type or namespace name 'IHTMLScriptElement' 
could not be found (are you missing a using directive or an assembly reference?) 
    C:\Users\m-tak\documents\visual studio 
2010\Projects\winformWithWebBrowserTest\winformWithWebBrowserTest\Form1.cs 
    25 13 winformWithWebBrowserTest 

설명서를 보았습니다 http://msdn.microsoft.com/en-us/library/aa768904(v=VS.85).aspx

하지만 이유를 설명 할 수 없습니다. 이미 포함되어 있지 않고 "using IHTMLScriptElement"(작동하지 않는 ..)과 같이 포함해야합니다.

답변

31

Project + 참조 추가, Microsoft.mshtml을 선택하십시오. \ system32를 \ MSHTML.tlb에

소스 코드 파일의 맨 위에 using 지시문을 추가합니다 : \ WINDOWS : 그것은 목록 (그것이 PIA입니다)에 표시되지 않는 경우 찾아보기 탭을 사용하여 C를 선택

using mshtml; 

배포 세부 사항을 알고 있어야합니다. PIA가 대상 컴퓨터에 설치되어 있지 않을 가능성이 낮 으면 가장 좋은 방법은 어셈블리 참조의 로컬 복사 속성을 True로 설정하는 것입니다. 그러면 빌드 폴더에 Microsoft.mshtml.dll 파일이 생성됩니다. EXE와 함께 대상 컴퓨터에 복사하십시오. PIA가 필요한 경우가 있습니다. 이 오래된 게시물에


업데이트는 .NET 4+ 및 VS2010 +는 이제 "삽입 상호 운용성 유형"참조 어셈블리 속성을 지원합니다. "PIA 없음"기능이라고도합니다. 이는 PIA의 필요성을 배제하고 interop 어셈블리를 처리하는 가장 좋은 방법입니다. 프로젝트가 이전 버전의 VS에서 시작된 경우가 아니면 자동으로 True로 설정됩니다.

다운면이 없어 더 이상 interop 어셈블리를 배포 할 필요가 없으며 사용중인 interop 유형이 이제 실행 파일에 포함됩니다. 네가 사용하는 것들. 코드에서 약간의 변경이 필요할 수 있습니다. 이제 COM 객체를 new XxxxClass()으로 만들면 이름의 "클래스"부분을 제거해야합니다.

+0

아! 그래, 아주 시작, mshtml.dll 및 오류 팝업을 추가하려고했다. 나는 그것이 있어야한다는 것을 몰랐다. –

2

IHTMLScriptElement는 Mshtml에 정의되어 있습니다. Microsoft HTML Object Library에 대한 참조를 추가 한 다음 VS에 "using mshtml"을 추가하여 IHTMLScriptElement를 해결해야합니다.

1

Mshtml.dll에 있습니다.

System.Windows.Forms.HtmlElementDomElement 속성은 개체 유형이지만 사실은 mshtml.IHTMLScriptElement과 같은 HTML 요소 인터페이스 중 하나로 캐스팅 할 수있는 요소의 COM IUnknown 포인터입니다.

2

answer은 mshtml과 같이 PIA를 배포 할 필요가없는 자바 스크립트 삽입 관리 솔루션 전용입니다.