using System;
using System.Collections.Generic;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using mshtml;
using SHDocVw; namespace WebClick_Tool
{
/// <summary>
/// IE浏览器操作
/// </summary>
public class IETool
{
/// <summary>
/// IE句柄
/// </summary>
public int IEHandle { get; set; }
/// <summary>
/// 浏览器
/// </summary>
public IWebBrowser2 IEBrowser { get; set; }
/// <summary>
/// 当前页面Document
/// </summary>
public HTMLDocumentClass Document { get; set; }
/// <summary>
/// 浏览器标头高度
/// </summary>
public int BrowserH { get; set; }
/// <summary>
/// 初始化是否成功
/// </summary>
public bool Suc { get; set; }
/// <summary>
/// 头部标题
/// </summary>
public string HeadTitle { get; set; }
/// <summary>
/// 失败头部标题
/// </summary>
public string BadHeadTitle { get; set; }
/// <summary>
/// 浏览器高度
/// </summary>
public int HeighBro { get; set; } public IETool(string HeadTitleO,string BadTitle)
{
HeadTitle = HeadTitleO;
BadHeadTitle = BadTitle;
HeighBro = -1;
if (GetHandleOfBrowser())
Suc = true;
else
Suc = false;
try
{
GetHtml(false);
}
catch { }
}
#region 系统API
/// <summary>
/// 找窗口句柄
/// </summary>
/// <param name="lpClassName"></param>
/// <param name="lpWindowName"></param>
/// <returns></returns>
[DllImport("user32", EntryPoint = "FindWindow")]
public static extern int FindWindowA(string lpClassName, string lpWindowName);
/// <summary>
/// 窗体发送消息
/// </summary>
/// <param name="hWnd"></param>
/// <param name="Msg"></param>
/// <param name="wParam"></param>
/// <param name="lParam"></param>
/// <returns></returns>
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
#endregion
/// <summary>
/// 获取IE句柄
/// </summary>
/// <returns></returns>
private bool GetHandleOfBrowser()
{
IEHandle = FindWindowA("IEFrame", null);
if (IEHandle == 0)
return false;
else
return true;
}
/// <summary>
/// IE窗体最大化
/// </summary>
public void SetMaxStyle(int Handle)
{
SendMessage(new IntPtr((Handle != 0 ? Handle : IEHandle)), 274, 61488, 0);
}
/// <summary>
/// 获取源代码
/// </summary>
/// <returns></returns>
public string GetHtml(bool Sacn)
{
string TempStr = "";
//初始化所有IE窗口
IShellWindows sw = new ShellWindowsClass();
for (int i = sw.Count - 1; i >= 0; i--)
{
//得到每一个IE的 IWebBrowser2 对象
IWebBrowser2 iwb2 = sw.Item(i) as IWebBrowser2;
//比对 得到的 句柄是否符合查找的窗口句柄
if (iwb2!=null&&iwb2.HWND == IEHandle)
{
Document = (HTMLDocumentClass)iwb2.Document;
if(Sacn)
if ((Document == null || Document.title == null || Document.title != HeadTitle) && !Document.title.Contains(BadHeadTitle))
{
continue;
} iwb2.StatusBar = false;//状态栏
SendMessage(new IntPtr(iwb2.HWND), 274, 61488, 0);
if (Document == null)
return "";
if (Document.title == "百度一下,你就知道" || Document.title == "360搜索 - 干净、安全、可信任的搜索引擎")
TempStr = "<!doctype html>" + ((HTMLDocumentClass)iwb2.Document).documentElement.outerHTML;
else
TempStr = ((HTMLDocumentClass)iwb2.Document).documentElement.outerHTML;
try
{
HeighBro = ((IHTMLElement2)Document.body).scrollHeight;
}
catch { }
break;
}
}
return TempStr;
} }
}

  

最新文章

  1. 微冷的雨ASP.NET MVC之葵花宝典(MVC)
  2. WebAPi添加常用扩展方法及思维发散
  3. 编写自定义Yeoman生成器
  4. 设计模式之美:Iterator(迭代器)
  5. LINQ的Intersect方法
  6. cocos布局分析
  7. iOS 的基本框架
  8. 用代码控制UI界面
  9. H - 放苹果
  10. python2 和python3共存下问题
  11. python 内置模块之hashlib、hmac、uuid
  12. 数据库读写分离Amoeba
  13. DVB数字电视系统简介(DVB-C,DVB-S,DVB-T)
  14. Fiddler 抓包设置
  15. FB面经 Prepare: Make Parentheses valid
  16. getprop从哪获取属性
  17. Java Web之Web组件之间的跳转方式
  18. 利用卷积神经网络(VGG19)实现火灾分类(附tensorflow代码及训练集)
  19. CentOS7 配置免密码登陆
  20. 服务器网络地址 &quot;TCP://XXX:5022&quot; 无法访问或不存在。请检查网络地址

热门文章

  1. Java I/O系统学习系列二:输入和输出
  2. Spring.yml配置文件读取字符串出现错误
  3. pyhanlp的安装
  4. Python基础15
  5. 用jTessBoxEditorFX训练字库
  6. HTTP的发展历史和各个版本差别
  7. 浅谈MongoDB基础及架构
  8. Nginx 高级配置-状态页配置
  9. 十一、yield生成器
  10. linux虚拟机获取不到ip的解决方法 --