|
|
|
|
||
教学课题:SPY++ 结合Delphi7.0利用API函数mouse_event实现模拟鼠标按下数字键
教学目标:用Delphi7.0编程坏境,以计算器为例模拟鼠标输入QQ号:854487915
教学步骤:认识API函数:Sleep,用于延时。无返回值;参数类型:整数型(Integer),延时的时间间隔。在Windows SDK中的函数原型:
VOID Sleep(
DWORD dwMilliseconds // sleep time in milliseconds 以毫秒为单位的时间间隔
);
教学源码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lb1: TLabel;
edt1: TEdit;
btn1: TButton;
lb2: TLabel;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
ck_hwnd:HWND;
ck_R:TRect;
begin
ck_hwnd:=FindWindow('SciCalc','计算器');
edt1.Text := IntToHex(ck_hwnd,8);
GetWindowRect(ck_hwnd,ck_R);
lb2.Caption := IntToStr(ck_r.Left)+','+ IntToStr(ck_R.Top)+'/'+
IntToStr(ck_R.Right)+ ','+ IntToStr(ck_R.Bottom );
//实现按下数字键8
SetCursorPos(350+ ck_R.Left ,150+ ck_R.Top ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,350+ ck_R.Left,150+ ck_R.Top,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,350+ ck_R.Left,150+ ck_R.Top,0,0);
//实现按下数字键5
SetCursorPos(350+ ck_R.Left ,180+ ck_R.Top ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,350+ ck_R.Left,180+ ck_R.Top,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,350+ ck_R.Left,180+ ck_R.Top,0,0);
//实现按下数字键4
SetCursorPos(310+ ck_R.Left ,180+ ck_R.Top ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,310+ ck_R.Left,180+ ck_R.Top,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,310+ ck_R.Left,180+ ck_R.Top,0,0);
//实现按下数字键4
SetCursorPos(310+ ck_R.Left ,180+ ck_R.Top ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,310+ ck_R.Left,180+ ck_R.Top,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,310+ ck_R.Left,180+ ck_R.Top,0,0);
//实现按下数字键8
SetCursorPos(350+ ck_R.Left ,150+ ck_R.Top ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,350+ ck_R.Left,150+ ck_R.Top,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,350+ ck_R.Left,150+ ck_R.Top,0,0);
//实现按下数字键7
SetCursorPos(310+ ck_R.Left ,150+ ck_R.Top ) ;
mouse_event(MOUSEEVENTF_LEFTDOWN,310+ ck_R.Left,150+ ck_R.Top,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,310+ ck_R.Left,150+ ck_R.Top,0,0);
end;
end.