Key Hook
-
Hi
Musst den Code natürlich anpassen !
lowbyte
-
Hi,
ich danke für den Code, jedoch hat das mir nur in sofern weitergeholfen, dass ich gemerkt habe, dass ich mich etwas unklar ausgedrückt habe.Ich will den Tastaturbefehl STRG+P an das Spider-Solitär Fenster abfangen (das ist wohl das richtige Wort).
Die entstandenen Unannehmlichkeiten tun mir leid.
mfG
-
Dann wirst du wohl nicht darum herum kommen die entsprechende Fensterprozedur zu hooken (durch eine Dll oder Thread Injektion).
-
Hi
Das ist natürlich was ganz anderes.
Ja das sind dan wohl auch die einzigen möglichkeiten.lowbyte
-
_-) schrieb:
Dann wirst du wohl nicht darum herum kommen die entsprechende Fensterprozedur zu hooken (durch eine Dll oder Thread Injektion).
Das habe ich vor. Jedoch fehlen mir, wie gesagt, die Tuts dafür

-
CreateRemoteThread und Microsoft Detours
-
Du kannst das doch auch mit GetAsyncKeyState machen:
while(true) { static bool Save = true if(GetAsyncKeyState(VK_CONTROL)&&GetAsyncKeyState(VK_P)&&Save) { /* STRG+P ist gedrückt. */ Save = false; } if(!GetAsyncKeyState(VK_CONTROL)||!GetAsyncKeyState(VK_P))Save = true; Sleep(3); }Diese Schleife musst du dann einfach in dein Programm einbauen. Dürfte allerdings nicht so auber sein wie ein Key-Hook. Ob VK_P ein gültiger Key-Code ist, weiss ich nicht, ich hab das Programm nicht getestet. Sollte VK_P nicht definiert sein, müsstest du den Key-Code von P irgendwie herausfinden und dann anstelle von VK_P einfügen.
MfG, Jochen
-
Also GetAsyncKeyState würde mein Problem lösen, allerdings arbeite ich mit der UI und kann da keine ich ja nicht einfach so eine while-Schleife einbauen. Und WM_KEYDOWN o.ä. wird ja nur gesendet, wenn die Anwendung den Focus hat (soweit ich weiß).
-
Dann verwende halt PeekMessage + Sleep(1) anstatt GetMessage, oder mach einen extra Thread.
-
Man muss hier gar nichts mit Hooks machen. Für solch einen Fall kann man elegant RegisterHotKey benutzen.