SendKeys Problem

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    SendKeys Problem

    Hallo allerseits!
    Ich habe ein Problem und zwar muss ich eine Texteingabe simulieren. Dies hatte ich bis heute Problemlos mit der SendKeys-Methode gelöst,
    jedoch hatte ich heute einen Error welcher wie sich herausstellte auf ein "+" im Text zurückzuführen war.

    Leider kann ich das "+" und andere Zeichen wie z.B. "}" in meinem Text nicht ganz ausschließen.


    Gibt es da ein einfaches Workaround? Oder irgendwelche Alternativen?


    VB.NET-Quellcode

    1. SendKeys.Send(TextBox1.Text & "{ENTER}" & TextBox2.Text & "{ENTER}" & TextBox3.Text & "{ENTER}" & TextBox4.Text)


    Vielen Dank im Voraus
    @Marv Was soll das "{ENTER}" bewirken?
    Einen Zeilenvorschub?
    Der geht mit Environment.NewLine.
    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!
    SendKeys ist das schlimmste was man Benutzen kann. Extrem unzuverlässig. Mal geht es, mal geht es nicht - keiner weiß warum. Teilweise wird das von anderen (Anti Virus) Programmen blockiert, oder irgendwelchen Windows Einstellungen.

    Was ist den das Ziel? Evtl. Hat jemand hier ne Clevere Alternative zu SendKeys.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Alternative zu SendKeys


    Sofern man ein Handle ermitteln kann, SendInput.

    pinvoke.net/default.aspx/user32.sendinput
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Kleiner Tipp @Marv: ErfinderDesRades' Antwort klingt vielleicht etwas spekulativ, aber ich bin mir sicher, dass er genau weiß, wo das Kaninchen im Paprika liegt. Auch wenn noch nicht Ostern ist: Versuch mal den Knackpunkt selber zu finden.
    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.
    Hmok. Dann ha(tte)st Du aber einen sehr guten Riecher. Da unser Betrieb täglich mit Fremdsoftware arbeiten muss (und der Hersteller einen Teufel tut, um Automatisierungen von Haus aus zu ermöglichen), bin ich mit Tastatureingabesimulation schon länger beschäftigt. Anfangs arbeitete ich auch mit SendKeys, schrieb mir dann aber u.a. mit SendInput und anderen WinAPI-Funktionen eigene Fremd-Anwendungs-Manipulations-Routinen, die zuverlässig sind (scheint zumindest bisher so). Von daher weiß ich, dass es 1. eine gute SendKeys-Doku vom Hersteller gibt und 2. dort auch explizite Aussagen bzgl. des hiesigen Threadproblems gemacht werden.

    Allerdings ist mir gerade klar geworden: Klar hat dieser Hersteller eine ausführliche Doku. Wenn dort die hier genannte Problematik nicht genannt werden würde, wäre die Doku nicht sonderlich gut.

    Auch wenn ein Stück weit off-topic: Wie behandeln denn die anderen Leser die Automatisierung von automatisierungsunwilligen Programmen?
    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“ ()

    VaporiZed schrieb:

    Wie behandeln denn die anderen Leser die Automatisierung von automatisierungsunwilligen Programmen?
    Zum Glück musste ich noch nie ein anderes Programm "fernsteuern". Bisher konnte ich mich immer im die Datenbank o.ä. einklinken. Bzw. Wenn ich mit einem Programm unzufrieden war, hab ich Teile davon selbst programmiert, so das ich auf andere Software nicht mehr angewiesen war.

    Manchmal muss man sich auch einfach damit abfinden, dass Dinge nicht (zuverlässig) gehen und es dann sein lassen. Wie es hier im Thread ist, kann ich aber nicht sagen weil @Marv hier drauf bisher nicht geantwortet hat.:

    mrMo schrieb:

    Was ist den das Ziel?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    (...) kann ich aber nicht sagen weil @Marv hier drauf bisher nicht geantwortet hat.:
    mrMo schrieb:
    Was ist den das Ziel?


    Sich ständig wiederholende manuelle Eingaben automatisieren.

    mrMo schrieb:

    Manchmal muss man sich auch einfach damit abfinden, dass Dinge nicht (zuverlässig) gehen und es dann sein lassen.


    Werde es dann wahrscheinlich aus so lösen müssen:

    VB.NET-Quellcode

    1. Dim a As String = TextBox1.Text
    2. If a.Contains("+") Then a = a.Replace("+", "Plus")
    a = a.Replace("+", "Plus") reicht. Da muss man nix mit .Contains machen. Aber was hat das mit SendKeys zu tun?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Nun, wenn das Problem mit Replace("+", "Plus") in dieser Situation gelöst werden kann, dann sehr schön. Eine adäquate Lösung nach SendKeys-Doku ist das jedoch nicht.
    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.