4-Stellige PIN für EUMEX generieren

  • Hi,

    ich bin neu bei AutoIt und suche eine Lösung für folgendes Problem:

    Da ich den PIN meiner EUMEX 504 PC USB nicht mer weiß, wollte ich durch ausprobieren den PIN herausfinden.
    Ich habe auch schon was zusammengetippt.
    Da ich das aber noch nicht so gut kann gibt es noch Probleme.
    Ich öffne das Kommunikationsprogramm und gebe den Anmeldepin ein (beginnend mit 0000), dann bestätige ich die nachfolgenden Meldungen mit Enter, bzw. N für "nicht offline arbeiten". Dadurch wird das Programm bei falschem Pin beendet.
    Da ich mit einer Schleife noch nicht zu einem brauchbaren Ergebnis gekommen bin, besteht mein CODE aus eine ewigen Wiederholung (0000 - 9999).

    Mein Problem ist die stelle, wo der Pin richtig ist und die Bestätigungen nicht zum Abbruch des Programmes führen (soll ja nicht, ich will ja den PIN resetten)!
    In diesem Fall schmiert der PC ab, da die weiteren Versuche des Scriptes, das Programm zu öffnen, zu viel für den guten sind.
    Da hilft nur PC ausschalten, dann ist aber auch mein PIN weg.

    Kann mir jemand helfen, das das Script abbricht, wenn ein Programm nicht geöffnet werden kann?

    Und evtl. auch etwas Hilfe für die Variante mit FOR...NEXT leisten?

    ****************************************************
    Run("Einrichtung.exe", "")
    Sleep(500)
    Send ("0000{ENTER}")
    Sleep(500)
    Send ("{ENTER}")
    Sleep(500)
    Send ("N")
    Sleep(500)


    Run("Einrichtung.exe", "")
    Sleep(500)
    Send ("0001{ENTER}")
    Sleep(500)
    Send ("{ENTER}")
    Sleep(500)
    Send ("N")
    Sleep(500)

    **************** usw ******************************

  • Also, die For-Next-To-Schleife könnte so aussehen (im Browser geschrieben):

    [autoit]


    For $i = 0 To 9999
    $sCode = StringFormat("%.4d", $i)
    ConsoleWrite($sCode & @CRLF) ;hier musst du dann den Code verarbeiten
    Next

    [/autoit]

    Wie man erkennt, ob die Eingabe erfolgreich war, steht auf einem anderen Blatt. Was für ein Fenster erscheint denn, wenn der Pin falsch eingegeben wird? Dann könnte man mit WinExists arbeiten.

  • AutoIt ist ja hervorragend dazu geschaffen andere Programme zu steuern.

    Dein vorgehen sollte wir folgt sein (auch wenn dich jetzt ein wenig erschlägt):

    • Eumex Programm durch AutoIt starten
    • Einen Handle (Zeiger) auf das Fenster mit der PIN-Eingabe holen
    • Darüber einen Zeiger auf das Input-Control holen (das ist das Feld für die PIN)
    • An das Control die Pin senden
    • Ein Zeiger auf die Schaltfläche holen
    • Die Schaltfläche klicken
    • Dann versuchen(!!) eine Zeiger auf das Fenster der Fehlermeldung zu holen. Klappt das nicht, z.B. per MsgBox die zuletzt verwendete PIN ausgeben.

    1 bis 6 kannst du auch weglassen, nimm chesstigers Schleife und baue dort deinen Code ein.
    Aber Schritt 7 ist deine Lösung. Wenn du keinen Zeiger bekommst hast du deinen Code.

    Die Funktionen die du brauchen könntest sind WinExists und ControlgetHandle - schau dir mal die Beispiele in der Hilfe dazu an.
    Um die Namen der/des Controls etc. herauszufinden - bei der Installtion von AutoIt wurde das Tool "AutoIt Windows Info" mit installiert, das sollte dir die notwendigen Daten verraten.

    BLinz

  • Vielen Dank für die rege Unterstützung,

    hat mit der Schleife und meinem Codegerüst wunderbar funktioniert.
    Für das Anhalten bei richtiger Codeeingabe habe ich einfach mit WinWait angehalten.
    Das Anmeldefenster baut sich nämlich nicht auf, wenn schon eine Instanz der EUMEX Software läuft (das hatte ich vorher mit der offline Version getestet).
    Den PIN habe ich in der Schleife immer in die Zwischenablage übergeben, und gut wars!
    Code habe ich :part: , und diesmal gut notiert :rock: !