下面以鼠標(biāo)左鍵單擊為例來說明如何模擬鼠標(biāo)操作:
procedure TForm1.btnLClickClick(Sender: TObject);
begin
SetCursorPos(10,10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
首先需要通過SetCursorPos函數(shù)來設(shè)置需要單擊的坐標(biāo)。然后通過mouse_event (MOUSEEVENTF_LEFTDOWN,0,0,0,0)語句在(10,10)坐標(biāo)處按下鼠標(biāo)左鍵。最后不要忘了通過mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)語句釋放鼠標(biāo)左鍵。
雙擊的操作可以通過兩個連續(xù)的單擊來實現(xiàn);鼠標(biāo)移動的操作可以通過指定mouse_event 函數(shù)的第1個參數(shù)MOUSEEVENTF_MOVE,第2個和第3個參數(shù)為左邊來實現(xiàn);右鍵單擊和左鍵單擊的原理一致,只不過mouse_event函數(shù)中的參數(shù)分別替換為MOUSEEVENTF_RIGHTDOWN和MOUSEEVENTF_RIGHTUP。
程序代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btnMove: TButton;
btnLClick: TButton;
btnLDClick: TButton;
btnRClick: TButton;
procedure btnMoveClick(Sender: TObject);
procedure btnLClickClick(Sender: TObject);
procedure btnLDClickClick(Sender: TObject);
procedure btnRClickClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnMoveClick(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_MOVE,100,100,0,0);
end;
procedure TForm1.btnLClickClick(Sender: TObject);
begin
SetCursorPos(10,10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
procedure TForm1.btnLDClickClick(Sender: TObject);
begin
SetCursorPos(200,200);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
procedure TForm1.btnRClickClick(Sender: TObject);
begin
SetCursorPos(200,200);
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
end;
end.
保存文件,然后按F9鍵運行程序
procedure TForm1.btnLClickClick(Sender: TObject);
begin
SetCursorPos(10,10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
首先需要通過SetCursorPos函數(shù)來設(shè)置需要單擊的坐標(biāo)。然后通過mouse_event (MOUSEEVENTF_LEFTDOWN,0,0,0,0)語句在(10,10)坐標(biāo)處按下鼠標(biāo)左鍵。最后不要忘了通過mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)語句釋放鼠標(biāo)左鍵。
雙擊的操作可以通過兩個連續(xù)的單擊來實現(xiàn);鼠標(biāo)移動的操作可以通過指定mouse_event 函數(shù)的第1個參數(shù)MOUSEEVENTF_MOVE,第2個和第3個參數(shù)為左邊來實現(xiàn);右鍵單擊和左鍵單擊的原理一致,只不過mouse_event函數(shù)中的參數(shù)分別替換為MOUSEEVENTF_RIGHTDOWN和MOUSEEVENTF_RIGHTUP。
程序代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btnMove: TButton;
btnLClick: TButton;
btnLDClick: TButton;
btnRClick: TButton;
procedure btnMoveClick(Sender: TObject);
procedure btnLClickClick(Sender: TObject);
procedure btnLDClickClick(Sender: TObject);
procedure btnRClickClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnMoveClick(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_MOVE,100,100,0,0);
end;
procedure TForm1.btnLClickClick(Sender: TObject);
begin
SetCursorPos(10,10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
procedure TForm1.btnLDClickClick(Sender: TObject);
begin
SetCursorPos(200,200);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
procedure TForm1.btnRClickClick(Sender: TObject);
begin
SetCursorPos(200,200);
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
end;
end.
保存文件,然后按F9鍵運行程序