private static void ShowMouseCaptureForm(object sender, EventArgs e) { taskt.UI.Forms.Supplemental.frmShowCursorPosition frmShowCursorPos = new taskt.UI.Forms.Supplemental.frmShowCursorPosition(); //if user made a successful selection if (frmShowCursorPos.ShowDialog() == DialogResult.OK) { //Todo - ideally one function to add to textbox which adds to class //add selected variables to associated control text CurrentEditor.flw_InputVariables.Controls["v_XMousePosition"].Text = frmShowCursorPos.xPos.ToString(); CurrentEditor.flw_InputVariables.Controls["v_YMousePosition"].Text = frmShowCursorPos.yPos.ToString(); //find current command and add to underlying class Core.Automation.Commands.SendMouseMoveCommand cmd = (Core.Automation.Commands.SendMouseMoveCommand)CurrentEditor.selectedCommand; cmd.v_XMousePosition = frmShowCursorPos.xPos.ToString(); cmd.v_YMousePosition = frmShowCursorPos.yPos.ToString(); } }
//build mouse command private static void BuildMouseCommand(IntPtr lParam, MouseMessages mouseMessage) { string mouseEventClickType = string.Empty; switch (mouseMessage) { case MouseMessages.WM_LBUTTONDOWN: mouseEventClickType = "Left Down"; break; case MouseMessages.WM_LBUTTONUP: mouseEventClickType = "Left Up"; break; case MouseMessages.WM_MOUSEMOVE: mouseEventClickType = "None"; if (lastMouseMove.ElapsedMilliseconds >= msResolution) { lastMouseMove.Restart(); } else { return; } break; case MouseMessages.WM_RBUTTONDOWN: mouseEventClickType = "Right Down"; break; case MouseMessages.WM_RBUTTONUP: mouseEventClickType = "Right Up"; break; default: return; } ////return if non matching event //if (mouseEventClickType == string.Empty) // return; //return if we do not want to capture mouse moves if ((!performMouseMoveCapture) && (mouseEventClickType == "None")) { return; } //return if we do not want to capture mouse clicks if ((!performMouseClickCapture) && (mouseEventClickType != "None")) { return; } //build a pause command to track pause since last command BuildPauseCommand(); //define new mouse command MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT)); var mouseMove = new Core.Automation.Commands.SendMouseMoveCommand { v_XMousePosition = hookStruct.pt.x.ToString(), v_YMousePosition = hookStruct.pt.y.ToString(), v_MouseClick = mouseEventClickType }; if (mouseEventClickType != "None") { IntPtr winHandle = WindowFromPoint(hookStruct.pt); int length = GetWindowText(winHandle, _Buffer, _Buffer.Capacity); var windowName = _Buffer.ToString(); mouseMove.v_Comment = "Clicked On Window: " + windowName; } generatedCommands.Add(mouseMove); }