C# 获取IE浏览器句柄

转载 2015年11月20日 18:35:29
/// <summary>
        /// 获取指定窗体的标题
        /// </summary>
        /// <param name="WinHandle">窗体句柄</param>
        /// <param name="Title">缓冲区取用于存储标题</param>
        /// <param name="size">缓冲区大小</param>
        /// <returns></returns>
        [DllImport("User32.dll")]
        public static extern int GetWindowText(IntPtr WinHandle, StringBuilder Title, int size);


        /// <summary>
        /// 用于枚举子窗体是的委托
        /// </summary>
        /// <param name="WindowHandle">窗体句柄</param>
        /// <param name="num">自定义</param>
        /// <returns></returns>
        public delegate bool EnumChildWindow(IntPtr WindowHandle, string num);
        /// <summary>
        /// 获取指定窗体的所有子窗体
        /// </summary>
        /// <param name="WinHandle">窗体句柄</param>
        /// <param name="ec">回调委托</param>
        /// <param name="name">自定义</param>
        /// <returns></returns>
        [DllImport("User32.dll")]
        public static extern int EnumChildWindows(IntPtr WinHandle, EnumChildWindow ecw, string name);
</pre><pre name="code" class="csharp">        IList<IntPtr> _WindowsList = new List<IntPtr>();
        public bool GetWindows(IntPtr p_Handle, int p_Param)
        {
            StringBuilder _ClassName = new StringBuilder(255);
            StringBuilder title = new StringBuilder(255);
            GetWindowText(p_Handle, title, 255);
            GetClassName(p_Handle, _ClassName, 255);


            if (_ClassName.ToString() == "IEFrame") 
            _WindowsList.Add(p_Handle);
            return true;
        }


        /// <summary>
        /// 枚举窗体
        /// </summary>
        /// <param name="handle"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        private bool EnumChild(IntPtr handle, string num)
        {
            StringBuilder title = new StringBuilder();
            //StringBuilder type = new StringBuilder();
            title.Length = 100;
            //type.Length = 100;

            GetWindowText(handle, title, 100);//取标题
            //GetClassName(handle, type, 100);//取类型
            listBox2.Items.Add(title);
            return true;
        }


        private void btnIEWnd_Click(object sender, EventArgs e)
        {
            EnumWindowsProc _Proc = new EnumWindowsProc(GetWindows);
            EnumWindows(_Proc, 0);

            if (_WindowsList.Count > 0)
            {
                hwnd = _WindowsList[0];
                //SetWindowPos(hwnd, -1, 0, 0, 0, 0, 1 | 2);
                SetForegroundWindow(hwnd);
            }
        }
</pre><pre name="code" class="csharp">       private void btnSubWindow_Click(object sender, EventArgs e)
        {
            EnumWindowsProc _Proc = new EnumWindowsProc(GetWindows);
            EnumWindows(_Proc, 0);

            EnumChildWindow ecw = new EnumChildWindow(EnumChild);
            for (int k = 0; k < _WindowsList.Count; k++)
            {
                IntPtr mainWindowHandle = _WindowsList[k];
                EnumChildWindows(mainWindowHandle, ecw, "");
            }
            if (_WindowsList.Count > 0)
            {
                hwnd = _WindowsList[0];
                SetForegroundWindow(hwnd);
            }
        }
</pre><pre name="code" class="csharp">

C# Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法

Windows APIWindows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程...
  • testcs_dn
  • testcs_dn
  • 2015年04月19日 14:29
  • 18932

C#查找指定窗口的子窗口的句柄

用axWebBrowser加载HTML网页时,真正显示内容的窗体并不是axWebBrowser,而是其子窗口的子窗口一个名为Internet Explorer_Server的类。从spy++可知:  ...
  • iwteih
  • iwteih
  • 2007年01月15日 17:00
  • 14349

C# 查找窗口,FindWindow用法

FindWindow 用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。 如果要从一个窗口的子窗口中查找需要使用FindWindowEX。   函数功能:该函数获...
  • lybwwp
  • lybwwp
  • 2012年11月10日 10:16
  • 18648

c#通过句柄控制IE浏览器

  • 2013年08月18日 12:05
  • 98KB
  • 下载

C# 获取IE浏览器的HTML内容

先添加2个COM对象引用来控制IE浏览器 Microsoft HTML Object Library Microsoft Internet Controls...
  • cjw13860421089
  • cjw13860421089
  • 2014年03月06日 09:35
  • 1589

C#winform webBrowser 实现抓句柄 想输入框中输入内容(笔记)

Win32ApiWrapper类: using System; using System.Collections.Generic; using System.Linq; using System.T...
  • cuoban
  • cuoban
  • 2015年12月28日 00:39
  • 1708

C#获得IE进程内的IDocument对象代码

C#获得IE进程内的IDocument对象代码    class Win32API    {        [DllImport("user32", EntryPoint = "RegisterWin...
  • shiff
  • shiff
  • 2007年12月05日 19:09
  • 1842

C#通过Win32 API操作IE浏览器 --- 获得IE的URL

using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices...
  • ziqing
  • ziqing
  • 2007年11月22日 13:22
  • 2053

C#获取窗口句柄概念和方法实例

在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统...
  • cuoban
  • cuoban
  • 2016年02月21日 00:30
  • 5781

c# 获取exe程序的句柄, 并根据句柄置顶它

c# 获取exe程序的句柄, 并根据句柄置顶它
  • wyq1153
  • wyq1153
  • 2016年10月28日 20:36
  • 1973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 获取IE浏览器句柄
举报原因:
原因补充:

(最多只允许输入30个字)