C#编的API例程 网页SPY  /*   程序名称:网页SPY(C#版) *     作者:ecjob  (86年出生,广东 寻 女人/项目/工作) *     日期:2008-10-18 * */using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.InteropServices;using mshtml;namespace WebSpy{  public partial class Form1 : Form  {    public Form1()    {      InitializeComponent();    }    #region DLL函数    [DllImport("user32.dll", EntryPoint = "SetCapture")]    public static extern int API_置鼠标到捕获窗口(IntPtr hwnd窗口句柄);    [DllImport("user32.dll", EntryPoint = "ReleaseCapture")]    public static extern int API_释放鼠标();    [DllImport("user32", EntryPoint = "RegisterWindowMessage")]    public static extern int API_注册字符串消息(string lpString);    //注意这个函数ObjectFromLresult的声明.    [DllImport("OLEACC.DLL", EntryPoint = "ObjectFromLresult")]    public static extern int API_取IEDocument(int lResult, ref System.Guid riid, int wParam,           [MarshalAs(UnmanagedType.Interface), In, Out]ref Object ppvObject);    [DllImport("user32.dll", EntryPoint = "WindowFromPoint")]    public static extern IntPtr API_取坐标窗口句柄(Point point);    [DllImport("user32.dll", EntryPoint = "SendMessageTimeout")]    public static extern int API_发送可超时消息(IntPtr hwnd,int msg,int wParam,int lParam,int fuFlags,int uTimeout,ref int lpdwResult);    [DllImport("user32.dll", EntryPoint = "GetClassName")]    public static extern int API_取窗口类名(IntPtr hwnd,StringBuilder lpClassName,int nMaxCount);    [DllImport("user32.dll", EntryPoint = "GetWindowRect")]    public static extern int API_取窗口矩形(IntPtr hwnd,ref Rectangle lpRect);    #endregion    #region 私有变量    private bool m_bln捕获鼠标 = false;    #endregion    #region 函数    private void fun取网页元素()    {      Rectangle o_rect = new Rectangle();      Point o_pot当前鼠标坐标 = Cursor.Position;      Point o_pot坐标 = new Point();      IntPtr o_inthwnd = fun取光标处句柄();      if (fun取窗口类名(o_inthwnd).Equals("Internet Explorer_Server"))      {        foreach (Control o_ctrl in groupBox2.Controls)        {          if (o_ctrl.GetType() == typeof(System.Windows.Forms.TextBox))          {            ((TextBox)o_ctrl).Text = "";          }        }        API_取窗口矩形(o_inthwnd, ref o_rect);        o_pot坐标.X = o_pot当前鼠标坐标.X - o_rect.Left;        o_pot坐标.Y = o_pot当前鼠标坐标.Y - o_rect.Top;        mshtml.IHTMLDocument2 o_doc对象 = (mshtml.IHTMLDocument2)fun取IES对象(o_inthwnd);        IHTMLElement o_Element对象 = o_doc对象.elementFromPoint(o_pot坐标.X, o_pot坐标.Y);        //以下其实自己喜欢取什么就取什么        txt窗口句柄.Text = o_inthwnd.ToString();        txt页面地址.Text = o_doc对象.url.ToString();        txt元素.Text = o_Element对象.tagName;        txtID.Text = o_Element对象.id;        txt相关数据.Text = o_Element对象.innerText;        txt引用代码.Text = o_Element对象.outerHTML;      }    }    private object fun取IES对象(IntPtr intIES句柄)    {      Object domObject = new Object();      int int资源编号 = 0;      Guid guidIEDocument2 = new Guid(); //IHTMLDocument2的接口id      int WM_Html_GETOBJECT = API_注册字符串消息("WM_Html_GETOBJECT");      //开始查找指定的ie窗体      API_发送可超时消息(intIES句柄, WM_Html_GETOBJECT, 0, 0, 2, 1000, ref int资源编号);      int lreturn = API_取IEDocument(int资源编号, ref guidIEDocument2, 0, ref domObject);      return domObject;    }    private IntPtr fun取光标处句柄()    {      return (API_取坐标窗口句柄(Cursor.Position));    }    private string fun取窗口类名(IntPtr Hwnd)    {      StringBuilder strClassName = new StringBuilder(256);      API_取窗口类名(Hwnd, strClassName, strClassName.Capacity);      return strClassName.ToString();    }    //多加的小玩意    private Color fun随机颜色()    {      Random o_rnd = new Random(unchecked((int)DateTime.Now.Ticks));      byte o_红 = (byte)o_rnd.Next(0, 255);      System.Threading.Thread.Sleep(10);      byte o_绿 = (byte)o_rnd.Next(0, 255);      System.Threading.Thread.Sleep(10);      byte o_蓝 = (byte)o_rnd.Next(0, 255);      return Color.FromArgb(o_红, o_绿, o_蓝);    }    #endregion        #region 事件    private void picMouse_MouseDown(object sender, MouseEventArgs e)    {      m_bln捕获鼠标 = true;      picMouse.Image = null;      picMouse.Cursor = new Cursor(Properties.Resources.鼠标_十字.GetHicon());      API_置鼠标到捕获窗口(picMouse.Handle);    }    private void picMouse_MouseUp(object sender, MouseEventArgs e)    {      if (m_bln捕获鼠标)      {        API_释放鼠标();        m_bln捕获鼠标 = false;        picMouse.Cursor = Cursors.Hand;        picMouse.Image = Properties.Resources.鼠标_十字;      }    }    private void picMouse_MouseMove(object sender, MouseEventArgs e)    {      if (m_bln捕获鼠标)      {        fun取网页元素();      }    }    private void timer1_Tick(object sender, EventArgs e)    {      label8.ForeColor = fun随机颜色();    }    #endregion          }}
/*   程序名称:网页SPY(C#版) *     作者:ecjob  (86年出生,广东 寻 女人/项目/工作) *     日期:2008-10-18 * */using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Runtime.InteropServices;using mshtml;namespace WebSpy{  public partial class Form1 : Form  {    public Form1()    {      InitializeComponent();    }    #region DLL函数    [DllImport("user32.dll", EntryPoint = "SetCapture")]    public static extern int API_置鼠标到捕获窗口(IntPtr hwnd窗口句柄);    [DllImport("user32.dll", EntryPoint = "ReleaseCapture")]    public static extern int API_释放鼠标();    [DllImport("user32", EntryPoint = "RegisterWindowMessage")]    public static extern int API_注册字符串消息(string lpString);    //注意这个函数ObjectFromLresult的声明.    [DllImport("OLEACC.DLL", EntryPoint = "ObjectFromLresult")]    public static extern int API_取IEDocument(int lResult, ref System.Guid riid, int wParam,           [MarshalAs(UnmanagedType.Interface), In, Out]ref Object ppvObject);    [DllImport("user32.dll", EntryPoint = "WindowFromPoint")]    public static extern IntPtr API_取坐标窗口句柄(Point point);    [DllImport("user32.dll", EntryPoint = "SendMessageTimeout")]    public static extern int API_发送可超时消息(IntPtr hwnd,int msg,int wParam,int lParam,int fuFlags,int uTimeout,ref int lpdwResult);    [DllImport("user32.dll", EntryPoint = "GetClassName")]    public static extern int API_取窗口类名(IntPtr hwnd,StringBuilder lpClassName,int nMaxCount);    [DllImport("user32.dll", EntryPoint = "GetWindowRect")]    public static extern int API_取窗口矩形(IntPtr hwnd,ref Rectangle lpRect);    #endregion    #region 私有变量    private bool m_bln捕获鼠标 = false;    #endregion    #region 函数    private void fun取网页元素()    {      Rectangle o_rect = new Rectangle();      Point o_pot当前鼠标坐标 = Cursor.Position;      Point o_pot坐标 = new Point();      IntPtr o_inthwnd = fun取光标处句柄();      if (fun取窗口类名(o_inthwnd).Equals("Internet Explorer_Server"))      {        foreach (Control o_ctrl in groupBox2.Controls)        {          if (o_ctrl.GetType() == typeof(System.Windows.Forms.TextBox))          {            ((TextBox)o_ctrl).Text = "";          }        }        API_取窗口矩形(o_inthwnd, ref o_rect);        o_pot坐标.X = o_pot当前鼠标坐标.X - o_rect.Left;        o_pot坐标.Y = o_pot当前鼠标坐标.Y - o_rect.Top;        mshtml.IHTMLDocument2 o_doc对象 = (mshtml.IHTMLDocument2)fun取IES对象(o_inthwnd);        IHTMLElement o_Element对象 = o_doc对象.elementFromPoint(o_pot坐标.X, o_pot坐标.Y);        //以下其实自己喜欢取什么就取什么        txt窗口句柄.Text = o_inthwnd.ToString();        txt页面地址.Text = o_doc对象.url.ToString();        txt元素.Text = o_Element对象.tagName;        txtID.Text = o_Element对象.id;        txt相关数据.Text = o_Element对象.innerText;        txt引用代码.Text = o_Element对象.outerHTML;      }    }    private object fun取IES对象(IntPtr intIES句柄)    {      Object domObject = new Object();      int int资源编号 = 0;      Guid guidIEDocument2 = new Guid(); //IHTMLDocument2的接口id      int WM_Html_GETOBJECT = API_注册字符串消息("WM_Html_GETOBJECT");      //开始查找指定的ie窗体      API_发送可超时消息(intIES句柄, WM_Html_GETOBJECT, 0, 0, 2, 1000, ref int资源编号);      int lreturn = API_取IEDocument(int资源编号, ref guidIEDocument2, 0, ref domObject);      return domObject;    }    private IntPtr fun取光标处句柄()    {      return (API_取坐标窗口句柄(Cursor.Position));    }    private string fun取窗口类名(IntPtr Hwnd)    {      StringBuilder strClassName = new StringBuilder(256);      API_取窗口类名(Hwnd, strClassName, strClassName.Capacity);      return strClassName.ToString();    }    //多加的小玩意    private Color fun随机颜色()    {      Random o_rnd = new Random(unchecked((int)DateTime.Now.Ticks));      byte o_红 = (byte)o_rnd.Next(0, 255);      System.Threading.Thread.Sleep(10);      byte o_绿 = (byte)o_rnd.Next(0, 255);      System.Threading.Thread.Sleep(10);      byte o_蓝 = (byte)o_rnd.Next(0, 255);      return Color.FromArgb(o_红, o_绿, o_蓝);    }    #endregion        #region 事件    private void picMouse_MouseDown(object sender, MouseEventArgs e)    {      m_bln捕获鼠标 = true;      picMouse.Image = null;      picMouse.Cursor = new Cursor(Properties.Resources.鼠标_十字.GetHicon());      API_置鼠标到捕获窗口(picMouse.Handle);    }    private void picMouse_MouseUp(object sender, MouseEventArgs e)    {      if (m_bln捕获鼠标)      {        API_释放鼠标();        m_bln捕获鼠标 = false;        picMouse.Cursor = Cursors.Hand;        picMouse.Image = Properties.Resources.鼠标_十字;      }    }    private void picMouse_MouseMove(object sender, MouseEventArgs e)    {      if (m_bln捕获鼠标)      {        fun取网页元素();      }    }    private void timer1_Tick(object sender, EventArgs e)    {      label8.ForeColor = fun随机颜色();    }    #endregion          }}

 
  
					
				
评论