[GELÖST] Alternative zu Sender.SendKeys

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von metakilla.

    [GELÖST] Alternative zu Sender.SendKeys

    Hi Comm,

    gibt es eine Alternative zur SendKeys-Funktion? Wenn ja welche?
    Ich bin gerade dabei eine Anwendung zu schreiben, welche bei Button_Click etwas in ein Java-Chatfeld in einem Browser-Element schreibt, jedoch hängt sich das Programm bei SendKeys auf.

    Grüße meta

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „metakilla“ ()

    Es muss doch für die Textarea eine funktion geben, die bei enter ausgeführt wird. Vlt hilft das weiter:

    Quellcode

    1. <div class="chatarea" id="chatareadiv">
    2. <textarea name="chat" id="chatarea" onKeyPress="onChatEnter(event);"></textarea>
    3. </div>
    Das Thema nervt mich irgendwie immernoch. Hat mir hierfür niemand eine Lösung? Oder habe ich mich sogar unverständlich ausgedrückt?

    Es handelt sich um ein Java-Chat, der aus einem Textfeld besteht, bei dem man Eingaben tätigen kann, jedoch fehlt der Button zum Absenden. Abgesendet wird mit einem ENTER und genau dieses ENTER bekomme ich nicht übergeben. Wie kann ich es dennoch übergeben, wenn sich die SendKeys.Send("{ENTER}") ständig aufhängt?

    EDIT:
    Es ist ein HTML-Chat

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „metakilla“ ()

    My.Computer.Keyboard.Sendkeys("TEXT" + "{enter}")
    Falls es sich bei deinem Java-Chat um einen Knuddelschat handelt, gibt es auch eine bessere möglichkeit, den Text in das Fenster zu senden, ohne den Cursor reinsetzen zu müssen. D.h. du kannst nebenbei i.was anderes machen und es würde trotzdem funktionieren.
    Wenn du das HTML Element via ID bekommst, wieso führst du das KeyDown Event nicht direkt aus?? Also erst Text eintragen

    VB.NET-Quellcode

    1. WebBrowser1.Document.getElementById("chatarea").value = "Mein Text"
    2. WebBrowser1.Document.getElementById("chatarea").Invoke("KeyPress")


    So oder so ähnlich. Bisher habe ich zwar nur Invoke('click') gesehen aber ich denke da kann man jedes Event nehmen und KeyPress sollte denke ich auch funktionieren.

    Edit: Um Knuddels.de wird es sich nicht handeln da er ja HTML Code gepostet hat und Knuddels ist ein Java Applet.
    My.Computer.Keyboard.Sendkeys("TEXT" + "{enter}")
    Falls es sich bei deinem Java-Chat um einen Knuddelschat handelt, gibt es auch eine bessere möglichkeit, den Text in das Fenster zu senden, ohne den Cursor reinsetzen zu müssen. D.h. du kannst nebenbei i.was anderes machen und es würde trotzdem funktionieren.
    Nein, es handelt sich um Chatroulette. Leider hängt er sich bei der Methode auch auf.

    @Dodo:
    Das habe ich auch schon versucht, geht aber nicht.

    Habe es sogar schon mit WindowHandels gemacht, was auch nicht geholfen hat.

    EIDT:
    Habe gerade eben herausbekommen, dass bei der SendKeys-Methode gar nichts an den Webbrowser gesendet wird... :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „metakilla“ ()

    Endlich habe ich das Problem gelöst. Ich habe festgestellt, dass SendKeys die zu übergebende Taste nur an das fokusierte Element schickt. Wenn ich nun das Enter an einen Button sende, ist es wohl logisch, dass das nicht geht. Zur Lösung:

    API-Deklaration P/Innvoke-Ermittlung:

    VB.NET-Quellcode

    1. Public Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As IntPtr) As Integer

    Anschließend erfolgt der Aufruf mit:

    VB.NET-Quellcode

    1. SetForegroundWindow(WebBrowser1.Focus)
    2. SendKeys.Send("{ENTER}")


    Grüße meta