Пример #1
0
        private static WindowPartten serilize(string str)
        {
            WindowPartten p = new WindowPartten();

            p.Index = Convert.ToInt32(mathResult(str, @"\[(?<num>\d*?)\]", "0"));
            p.Class = mathResult(str, @"@class='(?<cls>.*?)'", null);
            p.Name  = mathResult(str, @"@name='(?<nam>.*?)'", null);
            return(p);
        }
Пример #2
0
        private static int getWindowByParttern(WindowPartten parn)
        {
            var current = User32.FindWindow(parn.Class, parn.Name);

            if (parn.NextLevel != null)
            {
                return(getSubWindow(parn.NextLevel, current));
            }
            else
            {
                return(current);
            }
        }
Пример #3
0
        private static int getSubWindow(WindowPartten parn, int parentPtr)
        {
            var currentPar = User32.FindWindowEx((IntPtr)parentPtr, IntPtr.Zero, parn.Class, parn.Name);

            if (parn.Index > 0)
            {
                for (int idx = 1; idx <= parn.Index; idx++)
                {
                    currentPar = User32.FindWindowEx((IntPtr)parentPtr, (IntPtr)currentPar, parn.Class, parn.Name);
                }
            }
            if (parn.NextLevel == null)
            {
                return(currentPar);
            }
            else
            {
                return(getSubWindow(parn.NextLevel, currentPar));
            }
        }