当前位置:首页 > 程序设计 > Delphi程序设计 > 游戏辅助 > 详细内容
SPY++ 结合Delphi7.0简单应用代码优化02010108-01~02源码
作者:admin  发布时间:2009/12/21  阅读次数:15158  字体大小: 【】 【】【

教学课题:学会构造自已函数
教学目标:
用Delphi7.0编程坏境,以计算器为例模拟鼠标输入QQ号:854487915
教学要点:1、利用现有的知识构造函数_GetWinHwnd1、_GetWinHwnd1、_LeftMDown、_LeftMUp、_MouseLeftDU来优化源代码。
2、认识新函数:(1)、_GetWinHwnd1:用于以目标窗口类名来取目标窗口句柄。返回值类型:整数型(HWND);参数类型:宽字符指针型(PWideChar),目标窗口的窗口类名。函数原型:
function _GetWinHwnd1(ck_Class:PAnsiChar):HWND;
begin
Result:=FindWindow(ck_Class,nil);
end;

(2)、
_GetWinHwnd2:用于以目标窗口标题或名称来取目标窗口句柄。返回值类型:整数型(HWND);参数类型:宽字符指针型(PWideChar),目标窗口的窗口标题或名称。函数原型:
function _GetWinHwnd2(ck_Name:PAnsiChar):HWND;
begin
Result:=FindWindow(nil,ck_Name);
end;

(3)、_LeftMDown
:用于指定位置模拟鼠标左键按下。无返回值,参数1类型:整数型(Integer),目标坐标X;参数2类型:整数型(Integer),目标坐标Y。函数原型:
procedure _LeftMDown(dx:Integer;dy:Integer);
begin
SetCursorPos(dx,dy); //置鼠标坐标
mouse_event(MOUSEEVENTF_LEFTDOWN,dx,dy,0,0); //鼠标左键按下
end;

(4)、_LeftMUp
:用于指定位置模拟鼠标左键弹起。无返回值,参数1类型:整数型(Integer),目标坐标X;参数2类型:整数型(Integer),目标坐标Y。函数原型:
procedure _LeftMUp(dx:Integer;dy:Integer);
begin
SetCursorPos(dx,dy); //置鼠标坐标
mouse_event(MOUSEEVENTF_LEFTUP,dx,dy,0,0); //鼠标左键弹起
end;
(5)、_MouseLeftDU
:用于指定位置模拟鼠标左键执行一次点击动作。无返回值,参数1类型:整数型(Integer),目标坐标X;参数2类型:整数型(Integer),目标坐标Y。函数原型:
procedure _MouseLeftDU(dx,dy:Integer);
begin
SetCursorPos(dx,dy); //置鼠标坐标
mouse_event(MOUSEEVENTF_LEFTDOWN,dx,dy,0,0); //鼠标左键按下
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,dx,dy,0,0); //鼠标左键按下
end;

教学源码

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
lb1: TLabel;
edt1: TEdit;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
uses
Unit2;

procedure TForm1.btn1Click(Sender: TObject);
var
ck_hwnd:HWND;
ck_R:TRect;
begin
//ck_hwnd:=FindWindow('SciCalc','计算器');//取目标窗口句柄
ck_hwnd:=_GetWinHwnd2('计算器'); //取目标窗口句柄
edt1.Text := IntToHex(ck_hwnd,8);//显示目标窗口句柄
GetWindowRect(ck_hwnd,ck_R); //取目标窗口矩形坐标

//实现按下数字键8
_MouseLeftDU(350+ ck_R.Left,150+ ck_R.Top);
Sleep(100);
//实现按下数字键5
_MouseLeftDU(350+ ck_R.Left,180+ ck_R.Top);
Sleep(100);
//实现按下数字键4
_MouseLeftDU(310+ ck_R.Left,180+ ck_R.Top);
Sleep(100);
//实现按下数字键4
_MouseLeftDU(310+ ck_R.Left,180+ ck_R.Top);
Sleep(100);
//实现按下数字键8
_MouseLeftDU(350+ ck_R.Left,150+ ck_R.Top);
Sleep(100);
//实现按下数字键7
_MouseLeftDU(310+ ck_R.Left,150+ ck_R.Top);
Sleep(100);
//实现按下数字键9
_MouseLeftDU(390+ ck_R.Left,150+ ck_R.Top);;
Sleep(100);
//实现按下数字键1
_MouseLeftDU(310+ ck_R.Left,210+ ck_R.Top);
Sleep(100);
//实现按下数字键5
_MouseLeftDU(350+ ck_R.Left,180+ ck_R.Top);
end;

end.

Unit2源码

unit Unit2;

interface
uses
Windows;

function _GetWinHwnd1(ck_Class:PAnsiChar):HWND;
//以窗口类名取目标窗口句柄
function _GetWinHwnd2(ck_Name:PAnsiChar):HWND;
//以窗口标题取目标窗口句柄
procedure _LeftMDown(dx:Integer;dy:Integer);
//模拟鼠标左键按下
procedure _LeftMUp(dx:Integer;dy:Integer);
//模拟鼠标左键弹起
procedure _MouseLeftDU(dx,dy:Integer);
//鼠标左键按下弹起
implementation

function _GetWinHwnd1(ck_Class:PAnsiChar):HWND;
begin
Result:=FindWindow(ck_Class,nil);
end;

function _GetWinHwnd2(ck_Name:PAnsiChar):HWND;
begin
Result:=FindWindow(nil,ck_Name);
end;

procedure _LeftMDown(dx:Integer;dy:Integer);
begin
SetCursorPos(dx,dy); //置鼠标坐标
mouse_event(MOUSEEVENTF_LEFTDOWN,dx,dy,0,0); //鼠标左键按下
end;

procedure _LeftMUp(dx:Integer;dy:Integer);
begin
SetCursorPos(dx,dy); //置鼠标坐标
mouse_event(MOUSEEVENTF_LEFTUP,dx,dy,0,0); //鼠标左键弹起
end;

procedure _MouseLeftDU(dx,dy:Integer);
begin
SetCursorPos(dx,dy); //置鼠标坐标
mouse_event(MOUSEEVENTF_LEFTDOWN,dx,dy,0,0); //鼠标左键按下
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,dx,dy,0,0); //鼠标左键按下
end;
end.

来源:潇潇的编程网站 http://www.wgbcw.cn
上一篇:SPY++ 结合Delphi7.0简单应用02010107-05源码 下一篇:没有了!
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[1]
    暂无已审核评论!
Web Lite SWeTE: Simple Website Translation Engine
 


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

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


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


点击这里给我发消息
点击这里给我发消息