2024年6月15日发(作者:)

利用VB建立鼠标键盘操作回放

很多的教学软件或系统监视软件可以自动记录回放用户的输入文字或点击按钮等操作

操作,这个功能的实现是使用 了Windows的Hook函数。本文介绍如何通过使用VB来

实现鼠标键盘操作的纪录和回放。Windows提供API函数SetwindowsHookEx来建立一

个Hook,通过这个函数可以将一个程序添加到Hook链中监视Windows消息,函数语

法为:

Public Declare Function SetWindowsHookEx Lib "user32" _

Alias "SetWindowsHookExA" _

(ByVal idHook As Long, _

ByVal lpfn As Long, _

ByVal hmod As Long, _

ByVal dwThreadId As Long) As Long

其中参数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类

型,前者获得鼠标、键盘动作消息,后者回放鼠

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

并保存到一个数组中,另一个用于

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

下面是具体的程序实现:首先建立一个新工程,在Form1中加入三个

CommandButton控件用于控制消息钩子,另外还