//Delphi:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
//Retreive cursor position
procedure TForm1.Button1Click(Sender: TObject);
var
MausPos: TPoint;
begin
GetCursorPos(MausPos);
label1.Caption := IntToStr(MausPos.x);
label2.Caption := IntToStr(MausPos.y);
end;
//---------------->
//Set cursor position
procedure TForm1.Button2Click(Sender: TObject);
begin
SetCursorPos(1800, 900);
// Simulate the right mouse button down
// Rechte Maustaste simulieren
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
end;
//---------------->
procedure TForm1.Timer1Timer(Sender: TObject);
var
MausPos: TPoint;
var W,M:Word;
S:String;
begin
W:=GetAsyncKeyState(VK_LBUTTON);
M:=GetAsyncKeyState(VK_RBUTTON);
GetCursorPos(MausPos);
label1.Caption := IntToStr(MausPos.x);
label2.Caption := IntToStr(MausPos.y);
{
if W = $8001 then S := 'slobodna' else
if W = $0001 then S := 'pritisnuta' else
if W = $8000 then S := 'davno pritisnuta' else
if W = $0000 then S := 'davno slobodna' else
S := 'uci';
}
if W = $0001 then S := 'Left';
if M = $0001 then S := 'Right';
Label3.Caption:=Format('%s %.4x',[S , W] );
end;
//THE REAL POWER OF LAZARUS-IDE:
//Drop the rest, Lazarus is the best !
//Lazarus-IDE: //---------------->
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
//Retreive cursor position
procedure TForm1.Button1Click(Sender: TObject);
var
MausPos: TPoint;
begin
GetCursorPos(MausPos);
label1.Caption := IntToStr(MausPos.x);
label2.Caption := IntToStr(MausPos.y);
end;
//---------------->
//Set cursor position
procedure TForm1.Button2Click(Sender: TObject);
begin
SetCursorPos(1800, 900);
// Simulate the right mouse button down
// Rechte Maustaste simulieren
mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
end;
//---------------->
procedure TForm1.Timer1Timer(Sender: TObject);
var
MausPos: TPoint;
var W,M:Word;
S:String;
begin
W:=GetAsyncKeyState(VK_LBUTTON);
M:=GetAsyncKeyState(VK_RBUTTON);
GetCursorPos(MausPos);
label1.Caption := IntToStr(MausPos.x);
label2.Caption := IntToStr(MausPos.y);
{
if W = $8001 then S := 'slobodna' else
if W = $0001 then S := 'pritisnuta' else
if W = $8000 then S := 'davno pritisnuta' else
if W = $0000 then S := 'davno slobodna' else
S := 'uci';
}
if W = $0001 then S := 'Left';
if M = $0001 then S := 'Right';
Label3.Caption:=Format('%s %.4x',[S , W] );
end;
//THE REAL POWER OF LAZARUS-IDE:
//Drop the rest, Lazarus is the best !
//Lazarus-IDE: //---------------->
MouseAndKeyInput
Contents
[hide]About
MouseAndKeyInput package is a tool for cross-platform manipulation with mouse and key input. You can move mouse cursor to specified location, send clicks and do key presses. It is suitable for GUI testing or program control demonstration.
Location
lazarusdir/components/mouseandkeyinput
Author
License
GPL
Change Log
- Version 0.1
Restrictions
- it is not recommended calling mouse and key input directly from events like OnClick, use Application.QueueAsyncCall instead
- do not forget to set back mouse button and key state after Down method with Up method
Carbon
- pressing alpha chars is not supported
Gtk1/2
- needs Xtst library
- ALT key pressing is not supported
How to
With your project open: Go to the Lazarus install directory -> components -> mouseandkeyinput. There you will find: lazmouseandkeyinput.lpk. Open and compile the .lpk.
In your unit.pas add in Uses: MouseAndKeyInput ,LCLType
To simulate press of F1 from a button:
procedure TForm1.HelpButtonClick(Sender: TObject); begin
KeyInput.Apply([ssCtrl]); KeyInput.Press(VK_F1); // This will simulate press of F1 function key. KeyInput.Unapply([ssCtrl]);
end;
VK- def's is found here: http://lazarus-ccr.sourceforge.net/docs/lcl/lcltype/index-2.html
Mouse control:
MouseInput.Click(mbLeft,[],300,300); // Left click on X:=300 , Y:=300 MouseInput.Click(mbRight,[],1365,2); // Right click on X:=1365 , Y:=2