Mega Code Archive

 
Categories / Delphi / API
 

Using mouse_event[] to similate mouse events

Question: How do I use the mouse_event() procedure to simulate a mouse event? Answer: The following example demonstrates using the Windows API function mouse_event() to simulate a mouse event. When Button2 is clicked, the example code places the mouse over Button1 and clicks it. Mouse Coordinates given are in "Mickeys", where their are 65535 "Mickeys" to a screen's width. procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Button 1 clicked'); end; procedure TForm1.Button2Click(Sender: TObject); var Pt : TPoint; begin {Allow Button2 to repaint it's self} Application.ProcessMessages; {Get the point in the center of button 1} Pt.x := Button1.Left + (Button1.Width div 2); Pt.y := Button1.Top + (Button1.Height div 2); {Convert Pt to screen coordinates} Pt := ClientToScreen(Pt); {Convert Pt to mickeys} Pt.x := Round(Pt.x * (65535 / Screen.Width)); Pt.y := Round(Pt.y * (65535 / Screen.Height)); {Move the mouse} Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0); {Simulate the left mouse button down} Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);; {Simulate the left mouse button up} Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);; end;