为了让大家都能够使用demo,我以IE为测试对象,另外为了突出重点,所以如何获取窗口句柄我就不做演示了(不清楚的童鞋,可以去Google下哈),句柄值我使用spy++获得

大家可以下载demo(附:spy++)到本地进行调试学习,希望这篇文章对大家有所帮助

知识点:

1.Internet_Explorer_Server

2.msthml

3.API:RegisterWindowMessage

4.API:ObjectFromLresult

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Threading;
using mshtml; namespace 获取类名Internet_Explorer_Server控件的内容
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if(String.IsNullOrEmpty(tbHandle.Text))
{
MessageBox.Show("请写好窗口类名为:Internet Explorer_Server的窗口句柄");
return;
}
mshtml.IHTMLDocument2 id = GetHtmlDocument(int.Parse(tbHandle.Text));
textBox1.Text = id.body.innerHTML;
} class Win32API
{
[DllImport("user32", EntryPoint = "SendMessage")]
public static extern int SendMessage(int hwnd, int wMsg, int wParam, ref int lParam); [DllImport("user32", EntryPoint = "RegisterWindowMessage")]
public static extern int RegisterWindowMessage(string lpString); [DllImport("OLEACC.DLL", EntryPoint = "ObjectFromLresult")]
public static extern int ObjectFromLresult(
int lResult,
ref System.Guid riid,
int wParam,
[MarshalAs(UnmanagedType.Interface), System.Runtime.InteropServices.In, System.Runtime.InteropServices.Out]ref System.Object ppvObject
//注意这个函数ObjectFromLresult的声明
);
} public mshtml.IHTMLDocument2 GetHtmlDocument(int hwnd)
{
System.Object domObject = new System.Object();
int tempInt = 0;
System.Guid guidIEDocument2 = new Guid();
int WM_Html_GETOBJECT =Win32API.RegisterWindowMessage("WM_Html_GETOBJECT");//定义一个新的窗口消息
int W = Win32API.SendMessage(hwnd, WM_Html_GETOBJECT, 0, ref tempInt);//注:第二个参数是RegisterWindowMessage函数的返回值
int lreturn = Win32API.ObjectFromLresult(W, ref guidIEDocument2, 0, ref domObject);
mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)domObject;
return doc;
}
}
}

这里,我以IE打开的百度首页为测试对象,效果如下:


C#获取类名为Internet_Explorer_Server控件的内容的更多相关文章

  1. javascript获取asp.net服务器端控件的值

    代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_ ...

  2. Winform 获取当前单击的控件名称 和 向窗体添加控件

    Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_C ...

  3. 如何获取Iframe的页面控件的值

    有时候我们在页面需要使用iframe的方法来引用另一个页面,虽然个人建议不要使用iframe哈,但是有些时候是没得法了才使用的咯,那么在使用的过程中也会遇到某一些问题,我将自己遇到的问题记录下来方便以 ...

  4. C++ 一个程序获取另一个程序Edit控件的内容

    //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HWND hWnd=::FindWindow(NULL,"zhang001"); if( ...

  5. MFC获取光标相对于控件所在行

    获取光标在控件上所在的行数 /*editControl为Edit Control的变量*/ CPoint point = editControl.GetCaretPos(); //获取光标相对于控件的 ...

  6. 如何让窗口控件半透明(控件在Paint自己时,首先向主窗口询问,获取主窗口上控件所在区域的背景图)

    在网上关于窗口视觉效果,有2个问题被问得最多:第一个是如何让窗口边框有阴影效果?第二个是如何让窗口控件有半透明效果? 对于第一个问题,我们的答案是用双层窗口模拟或是用Layered Window.在X ...

  7. js如何获取asp.net服务器端控件的值(label,textbox,dropdownlist,radiobuttonlist等)

    js如何获取asp.net服务器端控件的值(label,textbox,dropdownlist,radiobuttonlist等) 欢迎访问原稿:http://hi.baidu.com/2wixia ...

  8. Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系

    Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系 1. Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似 ...

  9. findControl 可以获取前台页面的控件

    findControl 可以获取前台页面的控件

随机推荐

  1. mybatis学习笔记--常见的错误

    原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...

  2. HTML标签播放MP4视频

    1.使用 <object> 标签播放视频 <object width="500" height="300" data="http:/ ...

  3. ubuntu预装的是vim tiny版本

    可以安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令.安装vim: ubuntu预装的是vim tiny版本,而需要的是vim full版本.执安装vim full版本:$ ...

  4. 性能测试二十四:环境部署之Redis多实例部署

    由于redis服务端是单线程实现的,因此只能占用CPU的单核,为了充分利用CPU资源,可以在一台服务器上同时启动多个redis-server实例 首先删除之前的rdb.aof文件 注释掉3个save ...

  5. python 全栈开发,Day54(jQuery的属性操作,使用jQuery操作input的value值,jQuery的文档操作)

    昨日内容回顾 jQuery 宗旨:write less do more 就是js的库,它是javascript的基础上封装的一个框架 在前端中,一个js文件就是一个模块 一.用法: 1.引入包 2.入 ...

  6. 2017-2018-2 20155309 南皓芯 Exp5 MSF基础应用

    实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; 1.2 一个针对浏览器的攻击,如ms11_05 ...

  7. Masm615+notepad++6.8.8搭建汇编开发环境

    前言:很早以前搭过,做了笔记的.现在重新玩汇编,按照笔记撘环境,谁知道坑了自己两个小时,气的我现在打字手都在抖 准备工作: 1.Masm615汇编环境,下载地址:https://pan.baidu.c ...

  8. 《剑指offer》-双栈实现队列

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 很基本的STL容器操作了,应该可以1A的,但是忘记返回值的时候,clang的报错感觉并不友好啊.. cl ...

  9. jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]

    /** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...

  10. 里氏代换原则(Liskov Substitution Principle,LSP)

    第一种定义: 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换为o2,程序P的行为没有发生变化,那么类型S是类型T的子类型. 第二种定义: 所有引 ...