SendKey von TextBox an externes Programm

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Obermuda.

    SendKey von TextBox an externes Programm

    Hallo an alle,

    ich habe ein kleines Problem und würde mich freuen wenn mir jemand helfen könnte.

    Also:

    Ich habe eine Anwendung geschrieben in dem ich mit Sendkey an ein Externes Programm schicke. Alles soweit auch in Ordnung.

    Allerdings wenn ich SendKeys.Send (TextBox1.Text) ausführe, dann wird aus der TextBox immer nur die erste Zeile übernommen. Allerdings nicht die weiteren Zeilen darunter. ?(
    Wieso ???

    Hat jemand eine Idee ?

    Danke an alle
    @Obermuda Gib der textBox die Property MultiLine = True.
    Gugst Du auch Andere Programme fernsteuern
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,

    die TextBox steht bereits auf Multiline True.
    Dennoch wird nicht die ganze textbox übernommen.

    Nur nochmal zum Verständnis, das ganze wird mit einem Timer automatisch übergeben.

    Als Beispiel:

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    SendKeys.Send("{F10}")
    SendKeys.Send("{RIGHT}")
    SendKeys.Send("{RIGHT}")
    SendKeys.Send("{RIGHT}")
    SendKeys.Send("{RIGHT}")
    SendKeys.Send("{RIGHT}")
    SendKeys.Send("{DOWN}")
    SendKeys.Send("{ENTER}")
    System.Threading.Thread.Sleep(1500)
    SendKeys.Send(Label5.Text) 'Name
    System.Threading.Thread.Sleep(500)
    SendKeys.Send("{TAB}")
    System.Threading.Thread.Sleep(500)
    SendKeys.Send(Label9.Text) ' Adresse
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    System.Threading.Thread.Sleep(1000)
    SendKeys.Send(DateTimePicker1.Text)
    System.Threading.Thread.Sleep(500)
    SendKeys.Send("{TAB}")
    SendKeys.Send(TextBox1.Text)
    System.Threading.Thread.Sleep(500)
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send("{TAB}")
    SendKeys.Send(TextBox2.Text)
    System.Threading.Thread.Sleep(1000)
    SendKeys.Send("{TAB}")
    System.Threading.Thread.Sleep(500)
    SendKeys.Send("{TAB}")
    System.Threading.Thread.Sleep(500)
    SendKeys.Send("{TAB}")
    System.Threading.Thread.Sleep(500)
    SendKeys.Send("{TAB}")
    System.Threading.Thread.Sleep(500)
    SendKeys.Send(Label15.Text)
    System.Threading.Thread.Sleep(500)
    'SendKeys.Send("{ENTER}")
    SendKeys.Send("{ENTER}")
    SendKeys.Send(TextBox3.Text) ' Hier soll die ganze Textbox übernommen werden. Das macht er aber nicht. Sondern nur die erste Zeile obwohl ich mehrere Zeilen habe
    Timer1.Stop()
    @Obermuda Was soll das werden :?:
    Das sieht ja aus, als wolltest Du Dich irgendwo auomatisch anmelden oder so. X(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,

    das funktioniert nur wenn du ohne Zeilenumbruch schreibst. Wenn du allerdings einen Umbruch hast wird es ein Problem.

    Schau mal was ich meine als Beispiel:

    Hallo,
    Wie geht es dir ?
    Wie kann ich dir helfen ?

    Wenn du das so machst dann wird es nicht funktionieren.



    Ja RodFromGermany möchte ich ja auch. In meinem Kalender um einen Termin automatisch einzutragen........
    Was ja auch alles soweit funktioniert. Bis auf die komplette TextBox wo mein Text stehen soll......

    Obermuda schrieb:

    In meinem Kalender
    Outlook? Da sollte es was besseres geben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    1. Statt

    VB.NET-Quellcode

    1. SendKeys.Send("{RIGHT}")
    2. SendKeys.Send("{RIGHT}")
    3. SendKeys.Send("{RIGHT}")
    4. SendKeys.Send("{RIGHT}")
    5. SendKeys.Send("{RIGHT}")
    6. SendKeys.Send("{ENTER}")

    kannst Du auch sowas schreiben:

    VB.NET-Quellcode

    1. SendKeys.Send("{RIGHT 5}{ENTER}")

    davon abgesehen: Wenn Du in den Terminersteller reinwillst, schick doch gleich die entsprechende Tastenkombi an T-Bird:

    VB.NET-Quellcode

    1. SendKeys.Send("^i")


    Und bzgl. mehrzeilig: Wenn ich in meiner TextBox in der 1. Zeile a und in der 2. Zeile b stehen habe, wird mir quasi sogar zuviel geschickt, da der Termin gleich bestätigt/abgeschlossen wird. Das konnte ich durch folgendes verhindern:

    VB.NET-Quellcode

    1. SendKeys.SendWait(TextBox1.Text.Replace(Microsoft.VisualBasic.vbCrLf, Microsoft.VisualBasic.vbCr))
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

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

    Vielen Dank VaporiZed hat funktioniert :thumbsup:

    Nur statt SendKeys.SendWait(TextBox1.Text.Replace(Microsoft.VisualBasic.vbCrLf, Microsoft.VisualBasic.vbCr))
    einfach nur SendKeys.Send(TextBox1.Text.Replace(Microsoft.VisualBasic.vbCrLf, Microsoft.VisualBasic.vbCr))

    ohne Wait

    Nochmals vielen Dank an alle :thumbsup:


    Rot ist der Moderation vorbehalten

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()