unit Unit1;
// download by http://www.codefans.net
interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls; type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
btn3: TButton;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1;
EventArr:array[..]of EVENTMSG;
EventLog:Integer;
PlayLog:Integer;
hHook,hPlay:Integer;
bDelay:Bool; implementation {$R *.DFM}
Function PlayProc(iCode:Integer;wParam:wParam;lParam:lParam):LRESULT;stdcall;
begin
Result:=;
if iCode < then
Result := CallNextHookEx(hPlay,iCode,wParam,lParam)
else if iCode = HC_SYSMODALON then
// canPlay:=0
else if iCode = HC_SYSMODALOFF then
// canPlay:=1
else if (iCode=HC_GETNEXT) then begin
if bDelay then begin
bDelay:=False;
Result:=;
end;
pEventMSG(lParam)^:=EventArr[PlayLog];
end
else if (iCode = HC_SKIP)then begin
bDelay := True;
PlayLog:=PlayLog+;
end;
if PlayLog>=EventLog then begin
UNHookWindowsHookEx(hPlay);
end;
end; function HookProc(iCode:Integer;wParam:wParam;lParam:lParam):LRESULT;stdcall;
begin
// recOK:=1;
Result:=;
if iCode < then
Result := CallNextHookEx(hHook,iCode,wParam,lParam)
else if iCode = HC_SYSMODALON then
// recOK:=0
else if iCode = HC_SYSMODALOFF then
// recOK:=1
else if (iCode = HC_ACTION) then begin
EventArr[EventLog]:=pEventMSG(lParam)^;
EventLog:=EventLog+; if EventLog>= then begin
UnHookWindowsHookEx(hHook);
end;
end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
btn2.Enabled:=False;
btn3.Enabled:=False;
end; procedure TForm1.btn1Click(Sender: TObject);
begin
EventLog:=;
hHook:=SetwindowsHookEx(WH_JOURNALRECORD,HookProc,HInstance,);
btn2.Enabled:=True;
btn1.Enabled:=False;
btn3.Enabled:=False;
end; procedure TForm1.btn2Click(Sender: TObject);
begin
UnHookWindowsHookEx(hHook);
hHook:=;
btn1.Enabled:=True;
btn2.Enabled:=False;
btn3.Enabled:=True;
end; procedure TForm1.btn3Click(Sender: TObject);
begin
PlayLog:=;
hPlay:=SetwindowsHookEx(WH_JOURNALPLAYBACK,PlayProc,
HInstance,);
end; end.

hook鼠标键盘记录和回放的更多相关文章

  1. hook 鼠标键盘消息实例分析

    1.木马控制及通信方法包含:双管道,port重用.反弹技术.Hook技术,今天重点引用介绍一下hook的使用方法,hook信息后能够将结果发送到hacker邮箱等.实现攻击的目的. 转自:http:/ ...

  2. 用代码控制鼠标键盘(C#语言)

    前些时间想做一个鼠标点击器,用到了这些知识. 下面整理记录一下. ps.感谢各位大神 下面直接上代码 1.鼠标的控制 class MouseMove { #region MouseEvent [Sys ...

  3. Python盗号原理-代码实现截屏键盘记录远程发送(不要做坏事)

    这年头盗号的从出不穷,不是脱裤就是社工钓鱼.今天呢我们就以前面的几篇技术文章做铺垫,来讲一下python盗号的原理(学习用途,请勿用于违法犯罪),知己知彼方能百战不殆嘛. 脱裤我们就不多提了,无非就是 ...

  4. python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

    0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...

  5. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  6. Python直接控制鼠标键盘

    Python直接控制鼠标键盘 之前因为期末的原因已经很久没写博客了,今天博主发现一个好玩的模块PyAutoGUI,借助它可以使用Python脚本直接控制键盘鼠标,感觉可以解决很多无聊的机械运动.这里记 ...

  7. synergy一个鼠标键盘控制多台电脑

    有些时候我们同时操作多台电脑,但是我们只用一个鼠标和一个键盘,如果通过转换器啊或者是多个鼠标键盘就非常不方便了 下面我介绍一下通过安装synergy这个软件来给开发人员提供方便 这个软件安装比较简单, ...

  8. Linux终端回话记录和回放工具 - asciinema使用总结

    目前linux终端回放工具常见的就是asciinema和script了, 这两种工具都有那种类似于视频回放的效果.虽然这样做的代价是录制过程中需要占用一定的cpu资源以及录制后可能会因为视频文件太大而 ...

  9. Delphi下利用WinIo模拟鼠标键盘详解 有参考价值

    https://blog.csdn.net/fgrass_163/article/details/6365296 Delphi下利用WinIo模拟鼠标键盘详解 2011年04月26日 21:03:00 ...

随机推荐

  1. Java集合基于JDK1.8的LinkedList源码分析

    上篇我们分析了ArrayList的底层实现,知道了ArrayList底层是基于数组实现的,因此具有查找修改快而插入删除慢的特点.本篇介绍的LinkedList是List接口的另一种实现,它的底层是基于 ...

  2. 《新标准C++程序设计》4.7-4.9(C++学习笔记17)

    一.重载类型强制转换运算符 在C++中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符.类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过 ...

  3. 04 MySQL数据类型

    MySQL支持的数据类型   1.数值类型:       a.整数类型    TINYINT 1字节 有符号(-128~127); 无符号(0~255) SMALLINT 2字节  有符号(-3276 ...

  4. Good Bye 2019

    A.Card Game 题目大意:两个人都有共有n张卡牌,每张卡牌上都有一个数xi,没有两张牌上的数相同,且xi不小于1不大于n.每次两个人选出一张牌来,牌上数字大的人赢得此局,如果谁最后手上拥有所有 ...

  5. redis.conf文件配置

    最重要三个配置 1. bind 127.0.0.1 需要注释掉这一行,使别的主机可以访问 2. daemonize no 需要改为yes,使其后台运行 3. requirepass foobared ...

  6. P1011 A+B 和 C

    转跳点:

  7. [LeetCode] 934. Shortest Bridge 最短的桥梁

    In a given 2D binary array A, there are two islands.  (An island is a 4-directionally connected grou ...

  8. Apache服务器多站点配置

    Apache多站点设置,主要是关于httpd.conf配置文件的设置. 在httpd.conf配置文件中最后面的<VirtualHost>标签 #<VirtualHost *:80& ...

  9. Git提交出现error: src refspec master does not match any的问题

    在本地与远程分别新建了一个仓库并且关联后,想要把本地的文件提交到github上面, 输入下方命令后没有成功,而是出现了报错:error: src refspec master does not mat ...

  10. 编程入门-Eclipse快捷键的使用

    编程入门-Eclipse快捷键的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设置代码的自动补全 1>.查看默认的补全的提示符(如下图所示,依次点击"wi ...