IHTMLScriptElement在哪里?

mas*_*san 22 .net c#

我今天刚开始使用Visual Studio 2010 C#IDE.

我正在尝试向WebBrowser组件注入javascript并遵循stackoverflow的答案:

如何在WebBrowser控件中注入Javascript?

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");
Run Code Online (Sandbox Code Playgroud)

现在IHTMLScriptElement下面有红色波浪线说:

 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
Run Code Online (Sandbox Code Playgroud)

我看过文档 http://msdn.microsoft.com/en-us/library/aa768904(v=VS.85).aspx

但我无法理解为什么.这不是已经包括在内,只需要包括像" using IHTMLScriptElement"(这不起作用..)

Han*_*ant 39

Project + Add Reference,选择Microsoft.mshtml.如果它没有出现在列表中(它是PIA),那么使用Browse选项卡并选择c:\ windows\system32\mshtml.tlb

在源代码文件的顶部添加using指令:

using mshtml;
Run Code Online (Sandbox Code Playgroud)

请注意您有部署详细信息.如果PIA没有安装在目标机器上,这是不可能的,那么最好的办法是将程序集引用的Copy Local属性设置为True.这将在生成文件夹中创建Microsoft.mshtml.dll文件.将它与EXE一起复制到目标计算机上.有一些情况需要PIA,而不是这个.


更新到这个旧帖子,.NET 4+和VS2010 +现在支持"嵌入互操作类型"引用程序集属性.也称为"无PIA"功能.这淘汰了对PIA的需求,是处理互操作程序集的最佳方式.除非您的项目在旧版本的VS上启动,否则它会自动设置为True.

它没有下端,您不再需要部署互操作程序集,并且您使用的互操作类型现在已嵌入到您的可执行文件中.只是你使用的那些.您的代码可能需要进行一些小的更改,如果您现在创建COM对象,new XxxxClass()则需要删除名称的"类"部分.