KeyboardHook?
-
Ich hatte vor mich mit KeyboardHooks zu beschäftigen und als Beispiel erstmal ein kleines Programm zu schreiben, dass alle Tastendrücke abfängt sobald ich was in Notepad schreibe und diese dann per "cout" in der Konsole ausgibt.
Als .dll verwende ich diese: KeyboardHook.
Mein Problem ist nun, wie ich genau weiter machen muss nachdem ich mit LoadLibrary die .dll Datei geladen habe. Mit GetProcAddress SetupHook holen und dann den Rückgabe Wert von FindWindow an die Funktion übergeben?
Und wie verarbeite ich LRESULT, wenn ich jeden einzelnen Buchstaben ausgeben möchte? Mit GetAsyncKeyState?
Der Hook soll auch nur solange aktiv sein bis das Fenster wieder geschlossen ist, also alles in einer while Schleife ablaufen lassen?
Bisher habe ich mit Google nur .dll sources gefunden, jedoch nicht ein einziges Beispiel wie man die .dll dann nutzen kann.
Das Grundprinzip von Hooks habe ich auf jeden fall verstanden und ich glaube auch nicht das es zu schwierig für mich sein könnte. Ich habe nur grade Startprobleme, da ich selten mit .dll Dateien arbeite.
-
Hier mal mein Anfang...
#include <iostream> #include <Windows.h> #include <stdio.h> using namespace std; typedef bool(__cdecl *sHook)(HWND); typedef bool(__cdecl *uHook)(); int main(int argc, char *argv[]) { HINSTANCE hDll; hDll = LoadLibrary("Hook.dll"); if(hDll == NULL) { cout << "LoadLiabrary: " << GetLastError() << endl; return 0; } sHook SetupHook = (sHook)GetProcAddress(hDll, "SetupHook"); if(SetupHook == NULL) { cout << "SetupHook: " << GetLastError() << endl; return 0; } uHook UninstallHook = (uHook)GetProcAddress(hDll, "UninstallHook"); if(UninstallHook == NULL) { cout << "UninstallHook: " << GetLastError() << endl; return 0; } //Hook installieren wenn notepad offen ist HWND hWnd = FindWindow(NULL, "Unbenannt - Editor"); if(hWnd != NULL) { SetupHook(hWnd); } //Loggen und ausgeben... //... //... //... //Hook deinstallieren UninstallHook(); return 0; }
-
Willst du UNBEDINGT die Tasteneingabe mit Hooks abfangen ?
-
Sind Hooks nicht sicherer als die ganze zeit mit GetAsyncKeyState abzufragen?