/// <summary> /// Get process window parameters /// </summary> /// <param name="process">Target process</param> /// <returns>Four dimension of target window</returns> private DataStruct.Rect windowParam(string process) { Process[] ps = Process.GetProcessesByName(process); DataStruct.Rect rect = new DataStruct.Rect(); foreach (Process p in ps) { GetWindowRect(p.MainWindowHandle, out rect); } return(rect); }
} /* * if (!hook_flag && mouseHook == null) * { * mouseHook = new Mouse.Hook(); * mouseHook.OnMouseActivity += new System.Windows.Forms.MouseEventHandler(mouse_OnMouseActivity); * mouseHook.startHook(); * } * else * { * mouseHook.stopHook(); * mouseHook = null; * } * hook_flag = !hook_flag; * } * * void mouse_OnMouseActivity(object sender, MouseEventArgs e) * { * var windowPosition = MousePositionData.getCoorRatioInTargetWindow(windowParam(TARGET_PROCESS), e); * set_message_box("X:" + e.X + " Y:" + e.Y + "\nX ratio:" + windowPosition.X.ToString("N2") + " Y ratio:" + windowPosition.Y.ToString("N2")); * }*/ /// <summary> /// Used to invoke Mouse.performClick() /// </summary> /// <param name="ratio">ratio struct</param> /// <param name="delay">Thread delay after clicking</param> private void clickSimulate(DataStruct.MouseRatio ratio, int delay = 0) { DataStruct.Rect windowPosition = windowParam(TARGET_PROCESS); var left = Convert.ToUInt32(windowPosition.left); var right = Convert.ToUInt32(windowPosition.right); var top = Convert.ToUInt32(windowPosition.top); var bottom = Convert.ToUInt32(windowPosition.bottom); Mouse.performClick(MousePositionData.getRelativePosition(left, right, ratio.X), MousePositionData.getRelativePosition(top, bottom, ratio.Y)); Thread.Sleep(delay); }
private static extern int GetWindowRect(IntPtr hWnd, out DataStruct.Rect IpRect);