Problème à la création d'une classe pour gérer le Hook
Bonjour,
Je voudrais construire une classe qui puisse initialiser un Hook et tout un tas d'autre choses, de manière à pouvoir la réutiliser dans mes applis par la suite.
Le problème est que quand je met ce code dans le main:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <QtCore/QCoreApplication>
#include <QDebug>
#include <Windows.h>
HHOOK hHook = NULL;
using namespace std;
LRESULT CALLBACK MyLowLevelKeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
qDebug() << "Test Clavier!";
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, MyLowLevelKeyBoardProc, NULL, 0);
if(hHook == NULL)
qDebug() << "Hook failed !";
return a.exec();
} |
tout fonctionne bien, alors que quand je veut le créer dans une classe (avec séparation conventionelle dans le .h et .cpp ça bloque.
Voici mon .h:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#ifndef LOWLEVELHOOK_H
#define LOWLEVELHOOK_H
#include <QtCore>
#include <Windows.h>
#include <QDebug>
class LowLevelHook : public QObject
{
Q_OBJECT
public:
LowLevelHook();
private:
// Attributs:
HHOOK hookClavier;
// Méthodes:
LRESULT CALLBACK MyLowLevelKeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam);
};
#endif // LOWLEVELHOOK_H |
Et mon .cpp:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include "lowlevelhook.h"
LowLevelHook::LowLevelHook() : hookClavier(NULL)
{
hookClavier = SetWindowsHookEx(WH_KEYBOARD_LL, MyLowLevelKeyBoardProc, NULL, 0);
if(hookClavier == NULL)
qDebug() << "Hook Clavier Failed !";
}
LRESULT LowLevelHook::MyLowLevelKeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
qDebug() << "Test Clavier!";
return CallNextHookEx(hookClavier, nCode, wParam, lParam);
} |
Erreur sur la ligne 6 du .cpp:
error: argument of type 'LRESULT (LowLevelHook::)(int, WPARAM, LPARAM)' does not match 'LRESULT (*)(int, WPARAM, LPARAM)'