/// <summary> /// 全局搜索桌面UI元素 /// </summary> /// <param name="names"></param> /// <returns></returns> public static List <AutomationElement> FindGlobalElementByName(string names) { var list = new List <AutomationElement>(); IntPtr desktopPtr = BaseWin32Api.GetDesktopWindow(); //2、获得一个子窗口(这通常是一个顶层窗口,当前活动的窗口) IntPtr winPtr = BaseWin32Api.GetWindow(desktopPtr, BaseWin32Api.GetWindowCmd.GW_CHILD); //3、循环取得桌面下的所有子窗口 while (winPtr != IntPtr.Zero) { //4、继续获取下一个子窗口 winPtr = BaseWin32Api.GetWindow(winPtr, BaseWin32Api.GetWindowCmd.GW_HWNDNEXT); var rootElement = Utility.GetAutomationElementFromHandle(winPtr); var uiElement = Utility.FindAutoElementListByPath(winPtr, null); if (uiElement != null) { foreach (var ui in uiElement) { TextHelper.Write("查找内容===>" + ui.Current.Name + "---rootElement->" + rootElement.Current.Name); if (ui.Current.Name.Contains(names)) { list.Add(ui); } } } TextHelper.Write("查找内容===>总共查到" + (uiElement?.Count ?? 0) + "个子元素 ---rootElement->" + rootElement?.Current.Name ?? ""); } return(list); }
public static void DrawRectangle(int x, int y, int width, int height, int lineWidth, Color color) { IntPtr desk = BaseWin32Api.GetDesktopWindow(); IntPtr deskDC = BaseWin32Api.GetDCEx(desk, IntPtr.Zero, 0x403); BaseWin32Api.RedrawWindow(IntPtr.Zero, null, IntPtr.Zero, 0x85); using (Graphics g = Graphics.FromHdc(deskDC)) { //实例化Pen类 System.Drawing.Pen myPen = new System.Drawing.Pen(color, lineWidth); g.DrawRectangle(myPen, 0, 0, width - lineWidth, height - lineWidth); } //g.DrawString("Lightning", new Font("宋体", 50, FontStyle.Bold), Brushes.Red, new PointF(100, 100)); }
public static void GetList() { var list = new List <IntPtr>(); IntPtr winPtr = BaseWin32Api.GetDesktopWindow(); var list2 = EnumChildWindows(winPtr, "51.50"); ////2、获得一个子窗口(这通常是一个顶层窗口,当前活动的窗口) //IntPtr winPtr = BaseWin32Api.GetWindow(desktopPtr, BaseWin32Api.GetWindowCmd.GW_CHILD); //3、循环取得桌面下的所有子窗口 while (winPtr != IntPtr.Zero) { //4、继续获取下一个子窗口 winPtr = BaseWin32Api.GetWindow(winPtr, BaseWin32Api.GetWindowCmd.GW_HWNDNEXT); var tool = Utility.GetAutomationElementFromHandle(winPtr); if (tool == null) { continue; } if (tool != null) { TextHelper.Write("==========" + tool.Current.Name + "-" + tool.Current.LocalizedControlType); System.Console.WriteLine(tool.Current.Name + "-" + tool.Current.LocalizedControlType); } if (!tool.Current.Name.Contains("思迅天店")) { continue; } var toolElement = FindWindowEx(winPtr, "909.90", true); //var uiElement = Utility.FindAutoElementByPath(winPtr, new string[] { "2019108.00" }); //if (uiElement != null) //{ // System.Console.WriteLine("找到金额" + uiElement.Current.Name); // TextHelper.Write("=====找到金额=====" + uiElement.Current.Name); //} } System.Console.WriteLine("便利结束"); }