C#操作IE

Posted MoChiu程序人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#操作IE相关的知识,希望对你有一定的参考价值。

操作IE主要使用两个Com Dll:

1、Microsoft Internet Controls

2、Microsoft html Object Library

 

使用Microsoft Internet Controls取得所有的已经打开的IE(以Tab计算)

SHDocVw.ShellWindows IETabs = new SHDocVw.ShellWindows();

 

每个一个Tab都可以操作,每个Tab对应Com Object的SHDocVw.InternetExplorer

foreach (SHDocVw.InternetExplorer ieTab in IETabs)
{

}

 

取得每个Tab之后,就可以通过InternetExplorer的Document取得每个页面的Dom

mshtml.HTMLDocument dom = ieTab.Document as mshtml.HTMLDocument;

 

取得Dom之后,基本上就已经取得了操作IE的所有权限了,可以继续使用HTML Object Library对页面进行操作

或者通过注册javascript,对页面进行操作:

mshtml.IHTMLScriptElement script = dom.createElement("script") as mshtml.IHTMLScriptElement; \\\\创建script标签
script.text = "$(\\"[name=\'wd\']\\").val(\'刘德华\');"; \\\\通过Jquery,对百度进行操作

mshtml.HTMLBody body = dom.body as mshtml.HTMLBody; \\\\取得body对象
body.appendChild((mshtml.IHTMLDOMNode)script); \\\\注册JavaScript

 

完整代码(循环所有ieTab,对百度页面操作...搜索刘德华):

            SHDocVw.ShellWindows IETabs = new SHDocVw.ShellWindows();
            foreach (SHDocVw.InternetExplorer ieTab in IETabs)
            {
                if (ieTab.LocationURL.Contains("www.baidu.com"))
                {
                    mshtml.HTMLDocument doc = ieTab.Document as mshtml.HTMLDocument;
                    mshtml.IHTMLScriptElement script = doc.createElement("script") as mshtml.IHTMLScriptElement;
                    script.text = "$(\\"[name=\'wd\']\\").val(\'刘德华\');";
                    mshtml.HTMLBody body = doc.body as mshtml.HTMLBody;
                    body.appendChild((mshtml.IHTMLDOMNode)script);
                }
            }

 

园里有其他更加详细的参考Blog:

c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2

C#操作IE浏览器

 

个人建议:

基本接入IE,使用Com,然后其他业务操作,通过注入JavaScript进行操作

以上是关于C#操作IE的主要内容,如果未能解决你的问题,请参考以下文章

C#程序员经常用到的10个实用代码片段

兼容ie8,firefox,chrome浏览器的代码片段

C#操作IE

十条实用的jQuery代码片段

C# 最有用的(自定义)代码片段是啥? [关闭]

c#代码片段快速构建代码