Download source files - 18 Kb
Download demo project - 74 Kb
Introduction
This is an example for installing an application-defined hook procedures using Win32 SetWindowsHookEx()
function. This project implements only WH_JOURNALRECORD
and WH_JOURNALPLAYBACK
hooks. I was looking for more information and sample programs, but the only sample I'd found was Hooks32, an old Win32 project.
Because I didn't find any information about these problems into the developer sites (which I know), I decided to publish this simple tool.
The application can be used to automate some routine tasks, for example - testing. Start the target application, launch the HookManager, and press the "Start Recording" button. Then HookManager minimizes itself and starts tracking keyboard and mouse events.
When the recording is started, pressing CTRL+BREAK can stop it. Windows stops the recording and playback if the user presses CTRL+ALT+DEL or CTRL+ESC, which generates WM_CANCELJOURNAL
system message. But, be careful when you are journaling the mouse events! The recorded mouse events are with the current pointer coordinates, and if you close the target application and open it again, it will appear on different position, so the mouse events will go to wrong place.
This tool can be extended to do some more things. For example: the recorded events can be edited by changing the keystrokes (with different form data, etc.). But this is very precise work, because every pressed button generates 2 messages - WM_KEYDOWN
and WM_KEYUP
. The generated character depends from the state of other buttons - CTRL, SHIFT, CAPSLOCK, etc.
I haven't tested the application on Windows NT yet, but with Win98 it works well. I will be glad to receive ideas about extending the functionality.
Plamen Petrov, Varna, Bulgaria