C 需要Windows日志记录挂钩的帮助吗

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

我想构建一个软件测试自动化软件,为此我正在使用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 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);