天天加油 - 助您成才
通过Delphi建立键盘鼠标动作纪录与回放
您正在看的DELPHI是:通过Delphi建立键盘鼠标动作纪录与回放。

通过Delphi建立键盘鼠标动作纪录与回放

www.appleVB.com

很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作操作,这个功能的实现是使用

Windows的Hook函数。

Windows提供API函数SetwindowsHookEx来建立一个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows

消息,函数语法为:

SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: Dword)

其中参数idHook指定建立的监视函数类型。通过Windows MSDN帮助可以看到,SetWindowsHookEx函数提供15种不同

的消息监视类型,在这里我们将使用WH_JOURNALRECORD和WH_JOURNALPLAYBACK来监视键盘和鼠标操作。参数lpfn指定消

息函数,在相应的消息产生后,系统会调用该函数并将消息值传递给该函数供处理。函数的一般形式为:

Hookproc (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;

其中code为系统指示标记,wParam和lParam为附加参数,根据不同的消息监视类型而不同。只要在程序中建立这样

一个函数再通过SetWindowsHookEx函数将它加入到消息监视链中就可以处理消息了。

在不需要监视系统消息时需要调用提供UnHookWindowsHookEx来解除对消息的监视。

WH_JOURNALRECORD和WH_JOURNALPLAYBACK类型是两种相反的Hook类型,前者获得鼠标、键盘动作消息,后者回放鼠

标键盘消息。所以在程序中我们需要建立两个消息函数,一个用于纪录鼠标键盘操作并保存到一个数组中,另一个用于

将保存的操作返给系统回放。

下面来建立程序,在Delphi中建立一个工程,在Form1上添加3个按钮用于程序操作。另外再添加一个按钮控件和一

个Edit控件用于验证操作。

下面是Form1的全部代码

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Edit1: TEdit;

Button4: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

EventArr:array[0..1000]of EVENTMSG;

EventLog:Integer;

PlayLog:Integer;

hHook,hPlay:Integer;

recOK:Integer;

canPlay:Integer;

bDelay:Bool;

implementation

{$R *.DFM}

Function PlayProc(iCode:Integer;wParam:wParam;lParam:lParam):LRESULT;stdcall;

begin

canPlay:=1;

Result:=0;

if iCode < 0 then //必须将消息传递到消息链的下一个接受单元

Result := CallNextHookEx(hPlay,iCode,wParam,lParam)

else if iCode = HC_SYSMODALON then

canPlay:=0

else if iCode = HC_SYS

排行

  1. 简单实现:键盘全局钩子,监视多
  2. Visual C#组件技巧之深入ComboB
  3. C#中TreeView组件使用方法初步
  4. 使用C#进行Word 2002和Excel 200
  5. C#:消息队列应用程序
  6. C#和API
  7. COM组件对象与.NET类对象的相互转
  8. 解决Windows.NET下的COM+注册和登
  9. EffectiveC#:4.使用类厂(ClassFa
  10. 继承中的virtual,override,new,a
  11. 自制Pop3邮件接收系统(一):利
  12. C#资源管理器源码(带图标显示)
  13. C#排序算法大全
  14. C# Builder实现POP3信箱的监视
  15. 局域网中文件夹的共享WindowsNT/
  16. Windows外壳扩展编程之添加右键菜
  1. 简单实现:键盘全局钩子,监视多
  2. Visual C#组件技巧之深入ComboB
  3. C#中TreeView组件使用方法初步
  4. Visual C++.NET GDI+编程基础
  5. 用C++ Builder检测Windows的启动
  6. 深入理解C语言指针奥秘系列文章之
  7. C++经典对话系列
  8. 三十分钟掌握STL
  9. 浅析C#中的套接字编程
  10. 如何让应用程序只有一个实例在运
  11. 利用Visual C#打造一个平滑的进度
  12. 在Windows下让不同用户使用不同的
  13. C#中调用mapx5.0
  14. Visual C# 2005抢先预览
  15. 使用C#编写扩展存储过程
  16. Visual C#编写3D游戏框架示例
  1. 用程序取得CPU信息
  2. 微软官员回眸开发Windows2000的艰
  3. Visual C++.NET GDI+编程基础
  4. 用C++ Builder检测Windows的启动
  5. 深入理解C语言指针奥秘系列文章之
  6. C++经典对话系列
  7. 三十分钟掌握STL
  8. 浅析C#中的套接字编程
  9. 如何让应用程序只有一个实例在运
  10. 利用Visual C#打造一个平滑的进度
  11. 在Windows下让不同用户使用不同的
  12. C#中调用mapx5.0
  13. Visual C# 2005抢先预览
  14. 使用C#编写扩展存储过程
  15. Visual C#编写3D游戏框架示例
  16. 获得汉字字符串拼音首字母 C#版

最近更新

  • 推荐阅读
  • DELPHI《通过Delphi建立键盘鼠标动作纪录与回放》通过Delphi建立键盘鼠标动作纪录与回放
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM