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">

相关文章推荐

根据IE窗口句柄hWnd获得IWebBrowser接口

关于如何根据IE窗口句柄hWnd获得IWebBrowser接口,网络上代码很多,大多是使用了MSAA里的一个函数GetObjectFromLResult进行获取,一方面,许多朋友尤其是VB爱好者对MS...

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
  • 1966

【转】C#关闭IE相应的窗口

//关闭所有的IE System.Diagnostics.Process[] myProcesses; myProcesses = System.Diagn...

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

先添加2个COM对象引用来控制IE浏览器 Microsoft HTML Object Library Microsoft Internet Controls...

c# 获取当前活动窗口句柄,获取窗口大小及位置

需调用API函数 需在开头引入命名空间 using System.Runtime.InteropServices; 获取当前窗口句柄:GetForegroundWindow() [DllI...

C# 获取窗口句柄并且关闭应用程序

public class User32API     {         private static Hashtable processWnd = null;         public d...

Chrome浏览器扩展开发系列之十六:扩展中可用的Chrome浏览器API

除了Chrome浏览器支持的chrome.* API之外,Chrome浏览器扩展还可以使用Chrome浏览器为Web页面或Chrome app提供的APIs。对于Chrome浏览器2支持的API,还可...

JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等)

原文链接: 最近代码中有个功能需要用到手动触发键盘事件的功能。但键盘事件的fire在各浏览器下实现不一样,下面分别说明: 1. IE下没什么问题,创建事件对象、对对象的keyCode...

C#获取打印机安全句柄

  • 2008年11月14日 10:38
  • 55KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 获取IE浏览器句柄
举报原因:
原因补充:

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