Enter wird nicht gesendet



  • Hallo,

    Ich versuche in drei Textboxen einen Text einzutragen und bei der letzten Box zusätzlich ENTER zu senden. Dabei sollte das ganze im Hintergrund ablaufen, ich glaube bei SendMessage sollte das auch eigentlich kein Problem sein.
    Leider wird Enter nicht gesendet. Der Text wird richtig eingetragen.

    Ich weiß nicht ob es wichtig ist, aber die Boxen befinden sich in einem Java-Applet auf http://knuddelz.de.

    SendMessage(box1, WM_SETTEXT, 0, "Name");
    SendMessage(box2, WM_SETTEXT, 0, "Pass");
    SendMessage(box3, WM_SETTEXT, 0, "Raum");
    
    SendMessage(box3, WM_CHAR, WM_ENTER, 0);
    

    Eigentlich müsste sich dann ein kleines Fenster öffnen, was es leider nicht tut.

    Vielen Dank



  • Enter wird als Sonderzeichen angesehen.
    Sieh die mal ES_MULTILINE und ES_WANTRETURN genauer an, bzw teste, ob die gesetzt sind.
    "When the multiline edit control is in a dialog box, the default response to pressing the ENTER key is to activate the default button. To use the ENTER key as a carriage return, use the ES_WANTRETURN style."
    Ansonsten rausfinden, wie genau "activate the default button" funktioniert, wahrscheinlich per WM_COMMAND oder WM_NOTIFY ans Parentwindow schicken. Vielleicht musst du auch manuelle EN_CHANGE/EN_UPDATE verschicken, nachdem du den Text geändert hast.



  • Vielen Dank.

    Laut WinSpy++ sind die genannten beiden Styles nicht gesetzt. Mit WinSpy++ habe ich der RichEdit-Box den entsprechenden Style gegeben, leider wird immer noch kein Enter gesendet.

    Das Textfeld ist wie gesagt in einem Applet.

    SendMessage(myhandle, WM_SETFOCUS, &H0, "")
    SendMessage(myhandle, WM_CHAR, WM_ENTER, "")
    SendMessage(myhandle, WM_KILLFOCUS, &H0, "")
    

    ENTER funktioniert hier perfekt unter Java 6, aber nicht unter Java 7. Dort passiert einfach nichts.



  • Möglicherweise benutzen sie WM_CHAR einfach nicht mehr und sind stattdessen auf WM_UNICHAR umgestiegen. Alternativ versuche dasselbe mit WM_KEYDOWN. WM_KEYDOWN + WM_KEYUP sollte eigentlich für beides funktionieren, da das per TranslateMessage in WM_CHAR/WM_UNICHAR übersetzt werden sollte.



  • Wenn die Textbox im Vordergrund ist mit Focus, funktioniert Enter auch unter Java 7.

    PostMessage(&H40A74, WM_KEYDOWN, VK_RETURN, &H1C001)
    PostMessage(&H40A74, WM_CHAR, VK_RETURN, &H1C001)
    PostMessage(&H40A74, WM_KEYUP, VK_RETURN, &HC01C0001)
    

    Allerdings nicht mehr, wenn es nun nicht mehr der Fall ist, also z.B. ein anderes Fenster gerade im Vordergrund ist.


  • Mod

    Versuch lieber die WM_COMMAND ID heraus zu finden, die Enter auslöst.
    Mit SendMessage kann man keine Tastatureingaben "sicher und zuverlääsig" simulieren. Dazu gibt es SendInput!



  • Alternative: Subclassen des Editfeld, ASCII-Code 13 (Enter) abfangen, und dann was beliebt veranlassen - auch ein SendMessage. Etwas mühsam und nur für besondere Zwecke zu empfehlen.


Anmelden zum Antworten