下面以鼠標(biāo)左鍵單擊為例來(lái)說(shuō)明如何模擬鼠標(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;
首先需要通過(guò)SetCursorPos函數(shù)來(lái)設(shè)置需要單擊的坐標(biāo)。然后通過(guò)mouse_event (MOUSEEVENTF_LEFTDOWN,0,0,0,0)語(yǔ)句在(10,10)坐標(biāo)處按下鼠標(biāo)左鍵。最后不要忘了通過(guò)mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)語(yǔ)句釋放鼠標(biāo)左鍵。
雙擊的操作可以通過(guò)兩個(gè)連續(xù)的單擊來(lái)實(shí)現(xiàn);鼠標(biāo)移動(dòng)的操作可以通過(guò)指定mouse_event 函數(shù)的第1個(gè)參數(shù)MOUSEEVENTF_MOVE,第2個(gè)和第3個(gè)參數(shù)為左邊來(lái)實(shí)現(xiàn);右鍵單擊和左鍵單擊的原理一致,只不過(guò)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鍵運(yùn)行程序
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;
首先需要通過(guò)SetCursorPos函數(shù)來(lái)設(shè)置需要單擊的坐標(biāo)。然后通過(guò)mouse_event (MOUSEEVENTF_LEFTDOWN,0,0,0,0)語(yǔ)句在(10,10)坐標(biāo)處按下鼠標(biāo)左鍵。最后不要忘了通過(guò)mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)語(yǔ)句釋放鼠標(biāo)左鍵。
雙擊的操作可以通過(guò)兩個(gè)連續(xù)的單擊來(lái)實(shí)現(xiàn);鼠標(biāo)移動(dòng)的操作可以通過(guò)指定mouse_event 函數(shù)的第1個(gè)參數(shù)MOUSEEVENTF_MOVE,第2個(gè)和第3個(gè)參數(shù)為左邊來(lái)實(shí)現(xiàn);右鍵單擊和左鍵單擊的原理一致,只不過(guò)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鍵運(yùn)行程序