Нужна помощь с Windows Journal Record Hook - PullRequest
0 голосов
/ 23 августа 2009

Я хочу создать программное обеспечение для автоматизации тестирования программ, и для этого я играю с Windows Hooks.

Итак, я построил следующий 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;
}

Когда я компилирую это, я получаю ошибки компилятора:

error C2440: '=': 'LRESULT (__stdcall
*)(int,WPARAM,LPARAM)' kann nicht in 'HOOKPROC (__cdecl
*)(int,WPARAM,LPARAM)' konvertiert werden (could not be converted)

error C2440: 'Funktion': 'HOOKPROC (__cdecl *)(int,WPARAM,LPARAM)' kann nicht in 'HOOKPROC' konvertiert werden (could not be converted)

warning C4024: 'SetWindowsHookExA': Unterschiedliche Typen für formalen und übergebenen Parameter 2

1 Ответ

2 голосов
/ 23 августа 2009

Нет необходимости объявлять отдельную переменную hHookProc - просто передайте вашу процедуру SetWindowsHookEx напрямую:

hHook = SetWindowsHookEx(WH_JOURNALRECORD, JournalRecordProc, hMod, 0);

Вам также понадобится действительный дескриптор модуля:

HINSTANCE hMod = GetModuleHandle(NULL);

Сделав эти изменения и заставив JournalRecordProc вернуть значение, все это теперь компилируется и работает для меня (в этом случае SetWindowsHookEx в любом случае успешно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...