C 需要Windows日志记录挂钩的帮助吗
我想构建一个软件测试自动化软件,为此我正在使用Windows钩子 因此,我构建了以下C代码。有人能告诉我怎么改正吗C 需要Windows日志记录挂钩的帮助吗,c,windows,hook,C,Windows,Hook,我想构建一个软件测试自动化软件,为此我正在使用Windows钩子 因此,我构建了以下C代码。有人能告诉我怎么改正吗 #include "windows.h" // the call back function LRESULT CALLBACK JournalRecordProc(int code, WPARAM wParam, LPARAM lParam) { HHOOK hhk = 0; if (code > 0) { // save Dat
#include "windows.h"
// the call back function
LRESULT CALLBACK JournalRecordProc(int code, WPARAM wParam, LPARAM lParam)
{
HHOOK hhk = 0;
if (code > 0)
{
// save Data in File
}
if (code < 0)
{
// work done: now pass on to the next one that does hooking
CallNextHookEx(hhk, code, wParam, lParam);
}
/*
if (code == )
{
// ESC button pressed -> finished recording
UnhookWindowsHookEx(hhk);
}
*/
}
int main()
{
int iRet = 0;
HHOOK hHook = 0;
HINSTANCE hMod = 0;
HOOKPROC (*hHookProc)(int, WPARAM, LPARAM);
hHookProc = &JournalRecordProc;
// type of hook, callback function handle, hinstance [dll ?], 0 for systemwide
hHook = SetWindowsHookEx(WH_JOURNALRECORD, hHookProc, hMod, 0);
return iRet;
}
无需声明单独的
hHookProc
变量-只需将您的过程直接传递到SetWindowsHookEx
:
hHook = SetWindowsHookEx(WH_JOURNALRECORD, JournalRecordProc, hMod, 0);
您还需要一个有效的模块句柄:
HINSTANCE hMod = GetModuleHandle(NULL);
经过这些编辑,并使您的
JournalRecordProc
返回一个值,现在所有这些都为我编译并工作了(无论如何,SetWindowsHookEx
成功)。非常感谢!我不知道可以将函数名(函数句柄的JournalRecordProc-)直接放入SetWindowsHookEx()的函数调用中:-)
HINSTANCE hMod = GetModuleHandle(NULL);