ControlSend an Textfeld

  • Hallo in die Runde, ich möchte ein Textfeld das Passwort einfügen. Nur leider scheitert es an dem richtigen Pfad zum Fenster. Im Anhang befindet sich ein Screenshot des "Window-Info" Tools.

    Code
     ControlSend("","","Edit4","Test","xxx")
     Send("{ENTER}")

    funktioniert nicht wirklich. Und diverse YoutTube-Videos machen mich leider auch nicht schlauer....

    Danke für jede Hilfe.

    Stefan

  • Sag einfach mal welches Programm.
    In der Regel gibt es bessere Ansätze als ControlSend und Konsorten.
    Wenn ein Programm z. B. mit Java oder ähnlichem geschrieben wurde, dann gibt es auch keine klassischen Windows-Controls, welche man mit diesen Funktionen ansprechen könnte.

    Daher nochmal: Sag konkret um welches Programm es sich handelt und was du am Ende erreichen möchtest.

  • Hallo, danke.... es handelt sich um StarMoney.

    Das Programm verlangt beim Start zwingend ein Passwort. Da ich das Programm eh nur alleine auf dem heimischen Rechner nutze versuche ich den Weg etwas abzukürzen. Also: Programm starten, Passwort eingeben, Enter :)

    Danke

    Stefan

  • Ja das ist so ein Beispiel, wo die Programmoberfläche nicht in WindowsForms geschrieben ist.
    Dies sind die Standard-Windows-Funktionen zum Erstellen von GUIs.
    Diese können mit den Standard-AutoIt-Funktionen gesteuert werden.

    StarMoney hingegen scheint die Programmoberfläche hingegen mit WPF erstellt zu haben.
    Das ist ein anderer Ansatz wo man mit den Standard-AutoIt-Funktionen nur schwerlich rankommt.

    Es gibt hierzu durchaus Möglichkeiten (z. B. die >>UIA-UDFs<<).
    Ich schätze den Aufwand um sich dort einzuarbeiten um schließlich dein Ergebnis erreichen zu können jedoch für erheblich höher ein, als der Vorteil durch die ersparte Zeit bei der Passworteingabe.

    Also: Entweder du fitzt dich in diese Thematik ein oder jemand Blickiges hier hat schon ein paar Ansätze für dich parat.

  • Code
    Run("C:\Program Files (x86)\StarMoney 13 Basic\app\StartStarMoney.exe")
    Sleep(7000)
    MouseClick(523,478)
    Send("meinPasswort")
    Sleep(500)
    Send("{ENTER}")

    Mhhh, ich habe es jetzt so gelöst - läuft auch fast. Nur das Starmoney über das Passwort meckert. Aber wenn ich das Passwort aus dem Code kopiere und in Starmoney einsetze wird es akzeptiert.

    Wo könnte das Problem liegen?

  • Hi Schleifchen,

    wenn du Firefox hast kannst du das verwenden.

    Pfad zum Webdriver anpassen, Mailadresse und Passwort.

    Gruß

    Windi

  • Danke an alle, der kleine 6-Zeiler Code läuft auch. Nur: warum wird aus

    Code
    $password = "Sc!x3$WV*$aCf&V3%#LE" (lt.Code)
    Notepad++:   Sc3$WV*$aCf&V3%LE

    die Zeichen !x und # werden aus dem String entfernt, wo ist der Grund zu finden? Hat das was mit dem Zeichensatz zu tun?

    Danke

    Stefan

  • Wenn du es auf einem anderen Bildschirm laufen lässt, wird es vermutlich nicht mehr gehen.

    Weil Maus Koordinaten nicht mehr stimmen.

    Und für was brauchst du 7 Sekunden Ladezeit?

  • Wenn du es auf einem anderen Bildschirm laufen lässt, wird es vermutlich nicht mehr gehen.

    Weil Maus Koordinaten nicht mehr stimmen.

    Und für was brauchst du 7 Sekunden Ladezeit?

    Das die Koordinaten neu angepasst werden müssen ist mir bewusst. Aber für den eigenen Hausgebrauch geht dass schon. Eine ander Möglichkeit ohne großen Aufwand auf das Eingabefeld zuzugreifen kenne ich leider nicht. (s.o.)

    Das Programm braucht ne Weile zum Laden, ich habe es mit 5 sek. versucht - das war zu kurz. Eine ander Möglichkeit wäre sicherlich zu prüfen ob das Fenster geladen ist - aber wie?

  • hast du WinActivate mit dem Class Namen versucht?

    dies sollte das kleine Fenster in den Vordergrund holen und kannst entweder mit send oder controlsend arbeiten.

    wobei ich mir nicht sicher bin ob man auch das so schreiben muss

    Code
    [CLASS:            ]

    oder nur so sein muss

    Code
    HwndWrapper[DefaultDomain'(usw)

    Code ist nicht getestet habe das Programm nicht, den Namen richtig anpassen und versuchen :)

    sry für die vielen Edits.

    habe grad mit einem anderen Programm getestet. bei mir hat es nicht funktioniert ^^, du kannst es natürlich auch so versuchen :

    7 Mal editiert, zuletzt von MojoeB (29. Dezember 2022 um 01:12)

  • Hallo, laut Hilfe ist diese Schreibweise richtig:

    Code
    WinActivate("[CLASS:HwndWrapper[DefaultDomain;;688e7bea-7289-440e-b2d8-5d2aec296c78]]")

    aber egal ob mit oder ohne CLASS, es funzt so nicht. Da es aber mit dem MouseClick fehlerfrei läuft bedanke ich mich herzlich für die Hilfe :klatschen:

    Stefan

  • Hi zusammen,

    Windi:
    Dein Vorschlag in Post #6 bezieht sich auf den Login der Webseite, doch die ursprüngliche Frage bezieht sich wohl auf das Produkt StarMoney (für Windows), welches keine Web-App ist.
    Daher bringt dies Schleifchen leider nicht viel. Dennoch gut dargestellt wie leicht der Login mit dem WebDriver (au3WebDriver) sein kann 👍 .

    💡 Als kleiner Tipp für das nächste Mal:
    Mach' es den Nutzer doch gern etwas einfacher und verlinke die Abhängigkeiten (die au3WebDriver UDF Dateien). Oder hänge diese an deinen Post heran, ansonsten weiß der unerfahrene Nutzer ggf. nicht wo er diese Dateien findet.

    Schleifchen:
    Eine kleine "Verbesserung" könnte sein, dass du statt Send('Sc!x3$WV*$aCf&V3%#LE', 1), dein Passwort kurz in die Zwichenablage kopierst und es dann per strg + v einfach in das Feld "sendest". Dies geht schneller und das $SEND_RAW Flag musst du auch nicht setzen.

    AutoIt
    ClipPut('Sc!x3$WV*$aCf&V3%#LE')
    Send('^v')

    Ist am Ende Geschmackssache 😇 .

    Des Weiteren darf ich den meisten anderen hier beipflichten, dass du mit ControlSend, wenn die Klasse sich nicht ändert (daher auch der sub string Tipp von MojoeB mit WinTitleMatchMode = 2), robuster wärst. Doch wenn es nichts weiter ist als was du eingangs erwähntest:

    [...] Also: Programm starten, Passwort eingeben, Enter :)

    Dann scheint MouseClick völlig ausreichend zu sein 👍 .


    Angenehmen Abend euch allen noch ✨ .

    Viele Grüße
    Sven

  • 💡 Als kleiner Tipp für das nächste Mal:
    Mach' es den Nutzer doch gern etwas einfacher und verlinke die Abhängigkeiten (die au3WebDriver UDF Dateien). Oder hänge diese an deinen Post heran, ansonsten weiß der unerfahrene Nutzer ggf. nicht wo er diese Dateien findet.

    Darf ich dazu auf das Tutorial im engl. Wiki hinweisen? https://www.autoitscript.com/wiki/WebDriver

  • Hi zusammen,

    Windi:
    Dein Vorschlag in Post #6 bezieht sich auf den Login der Webseite, doch die ursprüngliche Frage bezieht sich wohl auf das Produkt StarMoney (für Windows), welches keine Web-App ist.
    Daher bringt dies Schleifchen leider nicht viel. Dennoch gut dargestellt wie leicht der Login mit dem WebDriver (au3WebDriver) sein kann 👍 .

    Danke Solve-Smart,

    ich hab gegoogelt und sah, dass man sich da auch online einloggen kann.

    Hab dann gesehen, dass er das Programm auf dem PC hat.

    Deshalb hab ich mich auch nicht mehr gemeldet.

    Wollte halt auch mal ein Beitrag leisten, für die viele gute Hilfe hier im Forum.

    Water Danke dir ist leichter Verlauf

    Gruß Windi

  • Hi water ,

    Darf ich dazu auf das Tutorial im engl. Wiki hinweisen? https://www.autoitscript.com/wiki/WebDriver

    warum fragst du? Na klar - gute Idee 👍 .



    Windi:

    [...] Wollte halt auch mal ein Beitrag leisten, für die viele gute Hilfe hier im Forum.

    Das finde ich auch super 😀 , wollte deine Anstrengung auch gar nicht mindern oder so. Wollte nur der Vollständigkeit halber, deinen Beitrag in den richtigen Kontext bringen.
    Finde es toll, wenn du deine Wertschätzung durch entsprechende Hilfestellung ausdrückst, bitte weiter so 🤝 .

    Viele Grüße
    Sven