public static Bitmap getBitmap(IntPtr handle) { Bitmap bmp = null; try { Wim32API.Rect rect = new Wim32API.Rect(); Wim32API.GetWindowRect(handle, ref rect); bmp = new Bitmap(rect.Right - rect.Left, rect.Bottom - rect.Top); Graphics memoryGraphics = Graphics.FromImage(bmp); IntPtr dc = memoryGraphics.GetHdc(); bool success = Wim32API.PrintWindow(handle, dc, 0); memoryGraphics.ReleaseHdc(dc); } catch (Exception e) { bmp = null; } return(bmp); }
private static void cleanAndSearch(string text) { if (singleton.zonesbar != null && singleton.zonesbar.Length == 4) { int index = 3; Wim32API.SetCursorPos(singleton.zonesbar[index].X, singleton.zonesbar[index].Y); Wim32API.mouseClick(singleton.zonesbar[index].X, singleton.zonesbar[index].Y, true); Thread.Sleep(100); index = 0; Wim32API.SetCursorPos(singleton.zonesbar[index].X, singleton.zonesbar[index].Y); Wim32API.mouseClick(singleton.zonesbar[index].X, singleton.zonesbar[index].Y, true); Thread.Sleep(100); index = 3; Wim32API.SetCursorPos(singleton.zonesbar[index].X, singleton.zonesbar[index].Y); Wim32API.mouseClick(singleton.zonesbar[index].X, singleton.zonesbar[index].Y, true); Thread.Sleep(100); Wim32API.SendText(text); } }
public void initDetectZones() { Wim32API.Rect rectTabPanel = new Wim32API.Rect(); Wim32API.GetWindowRect(hwndChild, ref rectTabPanel); Rectangle rectangleTabPanel = new Rectangle(); rectangleTabPanel.X = rectTabPanel.Left; rectangleTabPanel.Y = rectTabPanel.Top; rectangleTabPanel.Width = rectTabPanel.Right - rectTabPanel.Left + 1; rectangleTabPanel.Height = rectTabPanel.Bottom - rectTabPanel.Top + 1; Wim32API.SetForegroundWindow(hwnd); Bitmap bmpInitial = OCRTools.getBitmap(hwndChild); bmpInitial = OCRTools.toGrayscale(bmpInitial); List <Bitmap> bmpList = new List <Bitmap>(); bmpList.Add(bmpInitial); int Y = rectangleTabPanel.Y + (rectangleTabPanel.Height / 2); int X = rectangleTabPanel.X + rectangleTabPanel.Width; while (true) { Wim32API.SetCursorPos(X, Y); X -= 10; Bitmap bmp = OCRTools.getBitmap(hwndChild); bmp = OCRTools.toGrayscale(bmp); if (bmp != null && bmp != bmpInitial && !isBlackImage(bmp) && !containsArray(bmpList, bmp)) { bmpList.Add(bmp); } if (X < rectangleTabPanel.X) { break; } Thread.Sleep(100); } Bitmap[] capturedBitmaps = null; if (bmpList.Count > 0) { capturedBitmaps = bmpList.ToArray(); bmpList.Clear(); } if (capturedBitmaps != null && capturedBitmaps.Length > 0) { Rectangle[] zonesBar = detectBarZones(capturedBitmaps); Array.Sort(zonesBar, delegate(Rectangle rect1, Rectangle rect2) { int rsp = 0; if (rect1.X < rect2.X) { rsp = -1; } else if (rect1.X > rect2.X) { rsp = 1; } return(rsp); }); capturedBitmaps = null; if (detectedHandler != null && zonesBar != null && zonesBar.Length > 0) { detectedHandler.Invoke(rectangleTabPanel, zonesBar); } } }