Tastendruck umleiten

Billie

Erfahrenes Mitglied
Hellas!

Also ich bin eigentlich Java Programmierer und ärger mich jetzt schon ein paar Tage mit C++ rum. Wie dem auch sei, ich bin weit gekommen und es geht grundsätzlich im folgendes: Meine Anwendung soll alle Tastaturevents abfangen und sie entweder durchreichen, modifizieren od. blocken.

Das Problem, das Modifizieren. Warum funktioniert folgender Versuch die "A" Taste auf "S" zu mappen einfach nicht:

C++:
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
	KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *)lParam;

	printf("vkCode=%i,scanCode=%i\n", p->vkCode, p->scanCode);
	if(p->vkCode == 65) {
		p->scanCode = 31;
		p->vkCode = 83;
	}
	printf("vkCode=%i,scanCode=%i\n", p->vkCode, p->scanCode);
	return CallNextHookEx(hHook, nCode, wParam, lparam);
}

Die Ausgaben vor und nach der Zuweisung liefern ja die richtigen Werte... Aber irgendwie bekommt jede Applikation trotzdem ihr dämliches 'A'.

Hat jemand eine Ahnung?!

Danke für die Hilfe,
Billie
 
Ok, vielleicht kann mir noch jemand sagen, wie man direkt eine Änderung machen kann, ansonsten hier eine andere Möglichkeit über ein virtuelles TastaturEvent:

C++:
printf("vkCode=%i,scanCode=%i\n", p->vkCode, p->scanCode);
if(p->scanCode == 30) {
	INPUT input;
	ZeroMemory(&input, sizeof(input));
	input.type = INPUT_KEYBOARD;
	input.ki.wScan = 31;
	input.ki.wVk = 83;
	input.ki.time = p->time;
	input.ki.dwFlags = p->flags;
	input.ki.dwExtraInfo = p->dwExtraInfo;
	SendInput(1, &input, sizeof(input));
	return 1;
}
 
Zurück