Schopenhauer Geschrieben 21. März 2006 Geschrieben 21. März 2006 Hallo, Ich will ein Programm schreiben, welches einen Hook für ein anderes Programm insatlliert. Dieser Hook soll sämtliche WM_CHAR Nachrichten abfangen und sie einem globalen char Array, der mir einer index Variable durchalufen wird, gleichsetzen. Wenn ich also danach einige beliebige Tasten drücke, sollte der char Array ausgegeben werden und nicht die Zeichen der gedrückten Tasten. Das ganze funktioniert ganz gut, doch manchamal werden einzelne Zeichen des char Array nicht ausgegeben. Wenn im Array z.B der String "Hallo Forum!" abgelegt ist und ich danach einige Tasten drücke erscheint z.B "Hall Forum!" im Edit-Feld. Wiso ist dies so? Ich ziemlich ratlos. Hier noch die Hook-Funktion. MSG *Nachricht; if(nCode<0) CallNextHookEx(hook,nCode,wParam,lParam); switch(nCode) { case HC_ACTION: Nachricht=(MSG*) lParam; if(Nachricht->message==WM_CHAR) { /*Der Char Array Schrebivorlage und der integer zaehler sind gloabal deklariert*/ Nachricht->wParam=Schreibvorlage[zaehler]); lParam=(LPARAM)Nachricht; zaehler++; return CallNextHookEx(hook,nCode,wParam,lParam); } default: break; } return 0; } Im Voraus besten Dank für sämtliche Antworten. Zitieren
Klotzkopp Geschrieben 21. März 2006 Geschrieben 21. März 2006 Wie ich schon hier geschrieben habe, sollst du, wenn du CallNextHookEx aufrufst, den Rückgabewert dieses Aufrufs zurückgeben. Außerdem sollst du nur dann 0 zurückgeben, wenn du einen guten Grund dafür hast, dass andere Hooks diese Nachricht nicht sehen sollen. Die Zuweisung an lParam ist überflüssig. Darüber hinaus wirst du wohl den Debugger bemühen müssen. Möglicherweise kann man aus den Werten in Nachricht->lParam etwas folgern. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.