Пример #1
0
        //chapter 12
        public static void FindMenuTextAndID(int menuHnd, string prntTxt, ref int absPosID, ref SortedList menuList)
        {
            MENUITEMINFO menuinfo = new MENUITEMINFO();

            menuinfo.cbSize = 44;
            StringBuilder menuString2 = new StringBuilder(128);
            int           menuLen     = GetMenuItemCount(menuHnd);

            for (int thisMenu = 0; thisMenu < menuLen; thisMenu++)
            {
                menuinfo.fMask = MIIM_DATA | MIIM_ID | MIIM_STATE | MIIM_SUBMENU | MIIM_TYPE | MIIM_CHECKMARKS;
                int di = GetMenuItemInfo(menuHnd, thisMenu, 1, ref menuinfo);
                int db = GetMenuString(menuHnd, thisMenu, menuString2, 127, MF_BYPOSITION);

                GUITestUtility.GUIInfo mItem = new GUITestUtility.GUIInfo();
                mItem.GUIText       = menuString2.ToString();
                mItem.GUIParentText = prntTxt;
                mItem.GUIHandle     = menuinfo.wID;
                mItem.GUIClassName  = absPosID.ToString();
                absPosID++;
                try
                {
                    menuList.Add(menuinfo.wID, mItem);
                }
                catch {}
                int menuID = thisMenu;

                FindMenuTextAndID(GetSubMenu(menuHnd, menuID), prntTxt, ref absPosID, ref menuList);
            }            //for
            return;
        }
Пример #2
0
        public static void HandleMenuItems(int mWnd, string winText, string clsName, ref string pText, string textEntry)
        {
            int           hMenu    = GetMenu(mWnd);
            StringBuilder prntText = new StringBuilder(255);

            GetWindowText(mWnd, prntText, 255);

            SortedList IDLst    = new SortedList();
            int        absPosID = 0;

            FindMenuTextAndID(hMenu, prntText.ToString(), ref absPosID, ref IDLst);

            GUITestUtility.GUIInfo menuItem = (GUITestUtility.GUIInfo)IDLst.GetByIndex(int.Parse(clsName));
            int menuID = menuItem.GUIHandle;

            ArrayList menuPath = FindMenuClickPathByID(mWnd, menuID);

            if ((menuPath.Count - 1) == 0)
            {
                ClickMenuItem(mWnd, hMenu, (int)menuPath[0]);
                System.Threading.Thread.Sleep(500);
            }

            for (int subItem = 1; subItem < menuPath.Count; subItem++)
            {
                int intA    = (int)menuPath[subItem - 1];
                int subMenu = GetSubMenu(hMenu, intA);
                intA = (int)menuPath[subItem];

                int subMenuWin = 0;
                FindMenuWindow(ref subMenuWin, ref winText, ref pText);
                if (subItem == (menuPath.Count - 1))
                {
                    ClickMenuItem(subMenuWin, subMenu, intA);
                    System.Threading.Thread.Sleep(500);
                }
            }
        }