API 子窗体,深度查找

/// <summary>
        /// 获得子窗体句柄
        /// </summary>
        /// <param name="clIpt">*父窗体句柄</param>
        /// <param name="PClass">子窗体类别,没有添null.有时,查找第一个符合的子窗体句柄</param>
        /// <param name="Depth">当PClass为null时。定义向下查找深度。当为0时,找最底层子窗体</param>
        /// <returns></returns>
        public static IntPtr GetWindowForEX(IntPtr clIpt ,string PClass,int Depth)
        {
            IntPtr IptRetn = new IntPtr(0);
           
            if (PClass != null)
            {
                FindChildWindow FCW = new FindChildWindow(clIpt, PClass);
                IptRetn = FCW.FoundHandle;
            }
            else
            {
                IntPtr CnIpt = clIpt;
                if (Depth == 0)
                {
                    while (true)
                    {
                        IptRetn = FindWindowEx(CnIpt, IntPtr.Zero, null, "");
                        if (IptRetn == IntPtr.Zero)
                        {
                            IptRetn = CnIpt;
                            break;
                        }
                        CnIpt = IptRetn;
                    }
                }
                else
                {
                    for (int i = 0; i < Depth; i++)
                    {
                        IptRetn = FindWindowEx(CnIpt, IntPtr.Zero, null, "");
                        CnIpt = IptRetn;
                    }
                }
            }
            return IptRetn;
        }

 

 

#region 启动提示音
                        spl.SoundLocation = @"D:\1.wav";
                        spl.PlayLooping();
                        Thread.Sleep(700);
                        spl.Stop();
                        #endregion

posted on 2010-08-13 10:27  千羽  阅读(595)  评论(0)    收藏  举报

导航