Bonjour,

Je créer une classe KeyLoger qui utilise SetWindowsHookEx, celle ci a besoin d'une fonction ou d'une méthode static pour sa callback (2ième arg), voilà ce que ca donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
KeyLoger::KeyLoger()
{
	HHOOK KeyBoard = SetWindowsHookEx(WH_KEYBOARD_LL, &KeyLoger::KeyboardEvent, NULL, NULL);
	HHOOK Mouse = SetWindowsHookEx(WH_MOUSE_LL, &KeyLoger::MouseEvent, NULL, NULL);
}
je dois utiliser une queue à l'intérieur de cette CallBack, le problème c'est que celle ci doit être déclaré en static également ..
et c'est la que je me prends deux belles erreurs, ce qui est normal puisqu'une méthode statique n'a pas pour but d'accéder aux attribut de la classe, voici les erreurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
LNK2001	symbole externe non résolu "private: static class std::queue<struct s_Keys,class std::deque<struct s_Keys,class std::allocator<struct s_Keys> > > KeyLoger::Keys" (?Keys@KeyLoger@@0V?$queue@Us_Keys@@V?$deque@Us_Keys@@V?$allocator@Us_Keys@@@std@@@std@@@std@@A)
et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
LNK1120	1 externes non résolus
voilà ma classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
typedef struct s_Keys
{
	int		Key;
	bool	Ctrl = FALSE;
	bool	Alt = FALSE;
	bool	Shift = FALSE;
	bool	Maj = FALSE;
	bool	Altgr = FALSE;
 
	int		PosX;
	int		PosY;
 
	int		timestamp;
}t_Keys;
 
class KeyLoger
{
public:
	KeyLoger();
	~KeyLoger();
 
	static LRESULT CALLBACK KeyboardEvent(int nCode, WPARAM wParam, LPARAM lParam);
	static LRESULT CALLBACK MouseEvent(int nCode, WPARAM wParam, LPARAM lParam);
	static std::queue<t_Keys> GetKeys();
 
	HHOOK KeyBoard;
	HHOOK Mouse;
 
private:
	static std::queue<t_Keys> Keys;
	static bool KeyIsPut();
};

et voilà comment j'utilise l'une des CallBack :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
LRESULT CALLBACK KeyLoger::KeyboardEvent(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT)lParam;
	std::string str;
	t_Keys		UltiKey;
/*...............................................*/
        Keys.push(UltiKey);
		}
	}
	return CallNextHookEx(NULL, nCode, wParam, lParam);
Vu que je suis obligé d'utiliser mes Callback en statique, comment es ce que je peux accéder à mes attributs sans casse ..?
Je ne vois plus trop vers quoi chercher ...

dites moi si vous voulait des infos en plus !
Merci pour votre aide