Bonjour a tous,

Je cherche a bloquer certaines combinaisons de touches au clavier. Pour cela j'ai mis en place une dll qui me permet de faire un hook. Cependant, je rencontre des problemes quant a Alt+F4, Alt+Tab ainsi que Ctrl+Alt+Del ... ca ne fonctionne pas ...


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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
 
#define _WIN32_WINNT 0x0400
#include <windows.h>
#define WH_KEYBOARD_LL     13
 
HINSTANCE current;
HHOOK hookKeyboard;
 
LRESULT CALLBACK LLKeyboard (int nCode, WPARAM wParam, LPARAM lParam) 
{
	if(nCode == HC_ACTION) 
	{
		KBDLLHOOKSTRUCT kbStruct = *((KBDLLHOOKSTRUCT *)lParam);
		switch(wParam)
		{
			case WM_KEYDOWN:
 
				/* block windows key*/
				if (kbStruct.vkCode == VK_LWIN || kbStruct.vkCode == VK_RWIN) 
					return 1;
 
				 /* block esc + ctrl */
				if (kbStruct.vkCode == VK_ESCAPE  && GetAsyncKeyState(VK_CONTROL))
					return 1;
 
				/* block print screen */
	            if (kbStruct.vkCode == VK_SNAPSHOT) 
		           return 1; 
 
				/* block alt+F4 */
				if (kbStruct.vkCode == VK_F4 && ((kbStruct.flags & LLKHF_ALTDOWN) != 0) )
		           return 1;
 
				/* block alt+Tab */
				if (kbStruct.vkCode == VK_TAB && kbStruct.flags & LLKHF_ALTDOWN )
		           return 1; 
 
				/* block F1...F12 keys */
				if (kbStruct.vkCode == VK_F1 || kbStruct.vkCode == VK_F2 || kbStruct.vkCode == VK_F3 ||
					kbStruct.vkCode == VK_F4 || kbStruct.vkCode == VK_F5 || kbStruct.vkCode == VK_F6 ||
					kbStruct.vkCode == VK_F7 || kbStruct.vkCode == VK_F8 || kbStruct.vkCode == VK_F9 ||
					kbStruct.vkCode == VK_F10 || kbStruct.vkCode == VK_F11 || kbStruct.vkCode == VK_F12) 
		           return 1; 
 
				 /* block ctrl + alt + del */
				if (kbStruct.vkCode == VK_DELETE  && GetAsyncKeyState(VK_CONTROL) 
					&&  GetAsyncKeyState(VK_MENU) )
					return 1;
		}
	}
 
	return CallNextHookEx(hookKeyboard, nCode, wParam, lParam);
}
 
extern "C" int __stdcall initHook()
{
	if( !hookKeyboard )
	{
		hookKeyboard  = SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboard, current, 0);
	}
	return (int) hookKeyboard;
}
 
extern "C" void __stdcall stopHook()
{
	if(hookKeyboard)
	{
		UnhookWindowsHookEx(hookKeyboard);
		hookKeyboard = 0;
	}
}
 
BOOL WINAPI DllMain (HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
	if (dwReason == DLL_PROCESS_ATTACH) 
	{
		current = hDll;
    }
	if (dwReason == DLL_PROCESS_DETACH) 
	{
		stopHook();
	}
	return 1;
}

Si vous pouvez m'aider a resoudre ce probleme ...

Greg.