当前位置:首页 > 程序设计 > Delphi程序设计 > 游戏辅助 > 详细内容
SPY++ 结合Delphi7.0简单应用02010107-03源码
作者:admin  发布时间:2009-12-20  阅读次数:3955  字体大小: 【】 【】【

教学课题:SPY++ 结合Delphi7.0利用API函数GetWindowRect取计算器窗口矩形坐标、用SetCursorPos函数置鼠标位置及用mouse_event实现模拟鼠标按下数字键"8"
教学目标:Delphi7.0编程坏境,以计算器为例模拟鼠标输入QQ号:854487915
教学步骤:1、认识API函数:(1)、GetWindowRect,用于取窗口矩形坐标。返回值类型:布尔型(LongBool)。执行成功返回真(True),否则返回假(False);参数1类型:整数型(HWND),目标窗
口的窗口句柄;参数2类型:坐标结构(RECT),目标窗口的坐标结构地址。在Windows SDK中的函数原型
BOOL GetWindowRect(
      
HWND hWnd,  // handle of window              参数1:目标窗口句柄
       LPRECT lpRect   // address of structure for window coordinates 参数2:窗口的坐标结构地址
     );

RECT定义:

typedef struct _RECT {       // rc  
       LONG left;                //桌面窗口到目标窗口的左边距
       LONG top;                //桌面窗口到目标窗口的顶边距
       LONG right;            //桌面窗口到目标窗口的右边距
       LONG bottom;    //桌面窗口到目标窗口的底边距
} RECT;

(2)、SetCursorPos
用于设置鼠标当前位置。返回值类型:布尔型(LongBool)。执行成功返回真(True),否则返回假(False);参数1类型:整数型(Integer),水平位置X;参数2类型:整数型(Integer),垂直位置Y。在Windows SDK中的函数原型
BOOL SetCursorPos(

       int X,  // horizontal position   参数1:水平位置
       int Y   // vertical position           参数2:垂直位置
     );


(3)、mouse_event用于模拟鼠标动作。无返回值。参数1类型:整数型(Integer),鼠标动作标识;参数2类型:整数型(Integer),鼠标动作的水平坐标X;参数3类型:整数型(Integer),鼠标动作的垂直坐标Y;参数4类型:整数型(Integer),鼠标滚轮转动方向,若当前鼠标无滚轮动作,则取值为0;参数5在Windows SDK中的函数原型
VOID mouse_event(

       DWORD dwFlags,  // flags specifying various motion/click variants 鼠标动作标识
       DWORD dx,  // horizontal mouse position or position change 鼠标动作的水平坐标
       DWORD dy,  // vertical mouse position or position change 鼠标动作垂直坐标
       DWORD dwData,  // amount of wheel movement 当鼠标动作标识为MOUSEEVENTF_WHEEL时,此参数为鼠标滚轮转动方向,正值表示滚轮向前旋转,远离用户;负值表示滚轮向后旋转,向用户。
       DWORD dwExtraInfo   // 32 bits of application-defined information 设定一个32位值用于取扩展信息
     );

鼠标动作标识:

   MOUSEEVENTF_MOVE                       = $0001; { mouse move 鼠标移动}
   MOUSEEVENTF_LEFTDOWN               = $0002; { left button down 左键按下}
   MOUSEEVENTF_LEFTUP                   = $0004; { left button up 左键弹起}
   MOUSEEVENTF_RIGHTDOWN             = $0008; { right button down 右键按下}
   MOUSEEVENTF_RIGHTUP                 = $0010; { right button up 右键弹起}
   MOUSEEVENTF_MIDDLEDOWN           = $0020; { middle button down 中间按下}
   MOUSEEVENTF_MIDDLEUP               = $0040; { middle button up 中键弹起}
   MOUSEEVENTF_WHEEL                     = $0800; { wheel button rolled 滚轮移动}
   MOUSEEVENTF_ABSOLUTE               = $8000; { absolute move 绝对移动}

                               2、认识Delphi函数:IntToStr,用于整数数值转换为字符串。返回值类型:字符型(string),函数执行成功返回指定十进制数值的十进制字
符串型;参数类型:整数型(Integer),目标数值的十进制数值函数原型
function IntToStr(
Value: Integer;   //参数:要转换的十进制数值
): string;

教学源码:

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);

end;

end.

来源:潇潇的编程网站 http://www.wgbcw.cn
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[1]
    暂无已审核评论!
Web Lite SWeTE: Simple Website Translation Engine
 


设为首页 | 加入收藏 | 意见建议 | 友情链接 | 版权声明 | 管理登陆 | 编程论坛 | 给我留言

声明:本网站部分稿件来源的所有文字、图片和音视频稿件,来自互联网,若侵犯您的权利,请来信告知,我们将在第一时间内删除!


Copyright 2009-2015 redrose ( wgbcw.cn ) All rights reserved ICP备案编号:滇ICP备09007156号 Dict.cn


点击这里给我发消息
点击这里给我发消息
安全联盟站长平台