关于SHDocVw与mshtml
时间:2010-09-17 来源:4179745
前几天有个任务是:用软件操作当前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,就可以使用他们的功能啦。