Example #1
0
        /// <summary>
        /// 获取顶层窗体(直到获取到为止)
        /// </summary>
        /// <param name="className"></param>
        /// <returns></returns>
        private int GetTopHwnd(GetHwndConfig hwndConfig)
        {
            int currenHwnd = 0;

            do
            {
                currenHwnd = GetHwndInfor.FindTopForm(hwndConfig.TopFromClassName, null);
                Thread.Sleep(1000);
            } while (currenHwnd == 0);

            for (int arrIndex = hwndConfig.LevelIndex.Count; arrIndex > 0; arrIndex--)
            {
                int indexCount = hwndConfig.LevelIndex[arrIndex - 1];
                if (indexCount != 0)
                {
                    for (int index = 0; index < (indexCount - 1); index++)
                    {
                        currenHwnd = GetHwndInfor.GetWindow(currenHwnd, GetWindowFlagEnum.GetNextHwnd);
                    }
                }

                if (arrIndex > 1)
                {
                    currenHwnd = GetHwndInfor.GetWindow(currenHwnd, GetWindowFlagEnum.GetChildFirstHwnd);
                }
            }
            addLoog("定位句柄位置成功");


            return(currenHwnd);
        }
Example #2
0
        public int GetHwndLevelIndex(int hwnd)
        {
            int currHwndObjec = GetHwndInfor.GetWindow(hwnd, GetWindowFlagEnum.GetFirstHwnd);
            int endHwndObject = GetHwndInfor.GetWindow(hwnd, GetWindowFlagEnum.GetLastHwnd);
            int index         = 1;

            if (currHwndObjec != hwnd)
            {
                do
                {
                    currHwndObjec = GetHwndInfor.GetWindow(currHwndObjec, GetWindowFlagEnum.GetNextHwnd);
                    if (currHwndObjec == 0 && currHwndObjec == endHwndObject)
                    {
                        index = 0;
                        break;
                    }
                    index++;
                } while (currHwndObjec != hwnd);
            }

            return(index);
        }
Example #3
0
        public List <int> GetHwndPath(int hwnd)
        {
            List <int>    PathLis    = new List <int>();
            int           rootHwnd   = GetHwndInfor.GetWindow(hwnd, GetWindowFlagEnum.GetTopHwnd);
            GetHwndConfig hwndConfig = new GetHwndConfig(rootHwnd);

            //int tempHwnd = hwnd;
            PathLis.Add(hwnd);
            hwndConfig.LevelIndex.Add(GetHwndLevelIndex(hwnd));
            do
            {
                hwnd = GetHwndInfor.GetWindow(hwnd, GetWindowFlagEnum.GetParentHwnd);
                PathLis.Add(hwnd);

                if (hwnd == 0)
                {
                    MessageBox.Show("啊找到最顶层了,出问题了。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
                }
                else
                {
                    if (hwnd == rootHwnd)
                    {
                        hwndConfig.LevelIndex.Add(0);
                    }
                    else
                    {
                        hwndConfig.LevelIndex.Add(GetHwndLevelIndex(hwnd));
                    }
                }
            }while (rootHwnd != hwnd);

            this.txtHwndConfig.Text = JsonConvert.SerializeObject(hwndConfig);

            return(PathLis);
        }