Passage en paramètre d'une méthode CALLBACK
Bonjour,
Je dois écrire un petit Keylogger pour windows . Après quelques tests possitif sans utiliser la POO, j'ai voulu faire les choses au propre et me faire une classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| class Keylogger
{
public:
Keylogger();
~Keylogger();
LRESULT CALLBACK KeyBoardEvent(int code, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK MouseEvent(int code, WPARAM wParam, LPARAM lParam);
private:
bool MajIsPut();
}; |
Comme vous le voyez il y a deux fonctions callback . Leurs adresses sont passés en argument dans la fonction SetWindowsHookEx ():
Code:
1 2 3 4 5 6 7 8 9 10 11
| int main()
{
Keylogger loger;
HHOOK KeyBoard = SetWindowsHookEx(WH_KEYBOARD_LL, &loger.KeyBoardEvent, NULL, NULL);
HHOOK Mouse = SetWindowsHookEx(WH_MOUSE_LL, &loger.MouseEvent, NULL, NULL);
/*....*/
UnhookWindowsHookEx(KeyBoard); // decroche l'attache au keyboard
UnhookWindowsHookEx(Mouse);
return 0;
} |
Malheureusement, j'obtiens une magnifique erreur :
Code:
1 2 3 4
| error C2276: '&'*: opération non conforme sur l'expression d'une fonction membre liée
error C2660: 'SetWindowsHookExA'*: la fonction ne prend pas 3 arguments
error C2276: '&'*: opération non conforme sur l'expression d'une fonction membre liée
error C2660: 'SetWindowsHookExA'*: la fonction ne prend pas 3 arguments |
Je ne comprends pas d'ou peut provenir le problème, sachant que la même utilisation sans POO marche très bien .
Sans POO ça donne ça :
Code:
1 2
| HHOOK KeyBoard = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, NULL);
HHOOK Mouse = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, NULL); |
Doc callback windows : https://msdn.microsoft.com/fr-fr/lib...(v=vs.85).aspx
Doc setWindowsHookEx : https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
J'ai surement oublié de préciser certaines choses, n'hésitez pas à me le faire remarquer .
Merci pour votre aide :)