Ich habe diesen Tastatur-Hook-Code gefunden, den ich für meine Zwecke leicht modifizieren möchte: Ссылка
Als Übersicht möchte ich, dass der Benutzer eine Taste drückt, "E" sagt und die Tastatur ein anderes Zeichen, "Z", an die App zurückgibt, die gerade scharf ist.
Die relevante Methode, die ich geändert habe, sieht jetzt so aus:
%Vor%Die Konsole gibt das richtig aus als:
%Vor%JEDOCH gibt die Fokus-App immer noch "E" anstelle von "Z" ein. Warum? Ich änderte die Tastatureingabe, um 'Z' anstelle von 'E' zu enthalten, und die Konsolenlinien zeigen, dass es richtig geändert wurde!
Wie ich es verstehe, ruft das Aufrufen von return CallNextHookEx(_hookID, nCode, wParam, lParam);
den Befehl "print this now" an die geöffnete App. Geht das nicht so? Gibt es etwas, das mich daran hindert, den Charakter einzugeben, den ich möchte? Ich weiß, Apps wie AutoHotkey nehmen einen Eingabeschlüssel, überprüfen ihn und geben ein anderes Zeichen zurück. Wie mache ich das gleiche hier?
Danke!
Ich habe das schon mal gemacht, aber ein bisschen anders.
Anstatt zu versuchen, die an CallNextHookEx
gesendeten Parameter zu ändern, habe ich den Tastendruck "geschluckt" (Sie können dies tun, indem Sie einen Wert ungleich Null von der Hook-Prozedur zurückgeben, um zu verhindern, dass nachfolgende Prozeduren aufgerufen werden).
Dann habe ich SendInput verwendet, um den neuen Schlüssel zu senden, den ich wollte "spritzen".
Im Prinzip funktioniert das so:
Seien Sie vorsichtig bei zyklischen Weiterleitungen, d. h. "a" wird zu "b" umgeleitet, um zu "a" umgeleitet, es kann leicht explodieren;)
Sie haben wahrscheinlich den Hook "thread wide" und nicht "system wide" installiert, was bedeutet, dass die Schlüsselübersetzung nur für den Thread erfolgt, der den Hook installiert.
Um es "systemweit" zu installieren, benötigen Sie zwei Teile: eine DLL mit dem "hook provider" und eine exe, die sie verwaltet. Hier ist ein gutes Tutorial Ссылка und hier ein Beispiel: Ссылка
Aber: 1. Das Installieren systemweiter Haken kann Ihr System ernsthaft vermasseln (stellen Sie sicher, dass Sie die Schlüssel weiterleiten, die Sie nicht übersetzen). 2. Bitte ... erstellen Sie keinen anderen Keylogger
Tags und Links c# low-level keyboard-hook keyboard-layout