Veröffentlicht 21. März 200619 j 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.
21. März 200619 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.