前几天有个任务是:用软件操作当前IE窗口网页的内容。比如当用户,把鼠标移到网页上的某个按钮,你能在按钮下面有个提示,告诉他如何操作。当然是用桌面程序,接触不到网页源代码。

        发现用mshtml很方便。他可以随意1.提取网页源代码 2.修改网页元素样式 3.自动填取提交表单等等。

        关于mshtml的详细使用,还在学习当中,网上相关教程好像很少。

       mshtml.dll是ie的html解释器模块。shdocvw.dll是为Windows应用程序添加基础文件和网络操作相关模块。

       在vs.net中,项目-》添加引用-》com。添加这两个模块,就可以使用他们的功能啦。

我做的提取google首页源代码,给首页输入框与提交按钮增加提示的代码。

请在控制台下使用,Microsoft Visual C# 2008+xp+ie下测试通过,测试前请用IE打开GOOGLE首页。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass(); //创建Microsoft Internet Controls对象
             string filename;

            string IeTitle = "Google";//IE窗口标题,自己设定
            
           
            foreach (SHDocVw.InternetExplorer ie in shellWindows) //遍历IE游览器和文件游览器窗口
            {
               
                filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();//提取游览器程序的文件名,并转化为小写
                if (filename.Equals("iexplore") && IeTitle.Equals(ie.LocationName)) //如果文件名等于IE AND 窗口标题是 IeTitle 则提取出网页内容
                {
                    Console.WriteLine("网址: {0}", ie.LocationURL);
                    mshtml.IHTMLDocument2 htmlDoc = ie.Document as mshtml.IHTMLDocument2; //提取出网页内容

                    mshtml.IHTMLElement input = (mshtml.IHTMLElement)htmlDoc.all.item("q", 0); //找到页面的中输入框
                    mshtml.IHTMLElement input2 = (mshtml.IHTMLElement)htmlDoc.all.item("btnG", 0); //找到页面中的提交按钮
                 
                    input.title = "请在此输入你想要搜索的内容"; //给他们增加提示
                    input2.title = "这个提交按钮,点此开始搜索";
                                   
                    Console.WriteLine("网页内容: {0}", ((htmlDoc != null) ? htmlDoc.body.outerHTML : "***Failed***")); //输出代码

                }
            
            }
            Console.ReadKey();
        }
    }
}
使用前,请注意添加引用,并用IE打开GOOGLE首页。项目-》添加引用-》com。添加SHDocVw与mshtml,就可以使用他们的功能啦。