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.
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden