zoukankan      html  css  js  c++  java
  • C# 根据父窗口的标题和子窗口的类名返回子窗口的句柄

    很老的项目中的代码,现在也想不起来为什么要这么写了。

            [DllImport("user32.dll")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
            [DllImport("user32.dll")]
            public extern static int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
            [DllImport("User32.dll ")]
            public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr childe, string strclass, string FrmText);
            [DllImport("user32.dll")]
            public static extern int EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);
            public delegate bool CallBack(IntPtr hwnd, int lParam);
    
            /// <summary>
            /// 根据父窗口的标题和子窗口的类名返回子窗口的句柄
            /// </summary>
            /// <param name="HwndName">子窗口的类名</param>
            /// <param name="WindowName">父窗口的标题</param>
            /// <returns></returns>
            public static IntPtr FindWindowExOrde(string HwndName, string WindowName)
            {
                IntPtr HwndId = new IntPtr();
    
                IntPtr hwnd = FindWindow(null, WindowName);
    
                IntPtr ChildHwndWindow = FindWindowEx(hwnd, IntPtr.Zero, null, null);
    
                var H = EnumChildWindows(hwnd, (x, l) =>
                {
    
                    StringBuilder sb = new StringBuilder(HwndName.Length + 2);
    
                    if (x != IntPtr.Zero)
                    {
                        GetClassName(x, sb, sb.Capacity);
    
                        if (HwndName.Equals(sb.ToString()))
                        {
                            HwndId = x;
                            return true;
                        }
                    }
                    else
                        return false;
    
                    return true;
                }, 0);
    
    
                return HwndId;
    
    
    
            }
  • 相关阅读:
    互联网某些方面代替了朋友的作用
    穷人
    血脉之力
    鹤立鸡群
    如果有了一个进化的机会,你会选择放弃人类这个身份么?
    怎么样的制度才算是好制度
    /etc/fstab 参数详解及如何设置开机自动挂载
    Linux 查看系统硬件信息(实例详解)
    Linux下添加新硬盘,分区及挂载
    Quartz.NET
  • 原文地址:https://www.cnblogs.com/T-ARF/p/12159261.html
Copyright © 2011-2022 走看看