Hilfe bei der Automatisierung: Wie greife ich auf Felder in einer Herstellersoftware zu?

  • Hallo miteinander,

    Privat besitze ich ein Industriemessgerät, mit dem ich verschiedene Einstellungen testen möchte. Leider ist das in der Herstellersoftware mit vielen Klicks verbunden, was ich gerne durch ein Script vereinfachen würde.

    Zusätzlich kann ich meine Tests, die ich aus der Herstellersoftware exportieren kann, dort nicht direkt visualisieren. Deshalb habe ich mir eine Excel-Datei erstellt, mit der ich zwei Dateien (Parameter.csv und Daten.csv) einlesen kann. Basierend darauf wird der Versuch in einem separaten Excel-Blatt erstellt – das funktioniert schon recht gut und mit nur einem Klick. 😊

    Da ich vile Tests vor mir habe, wäre es wirklich hilfreich, einige Arbeitsschritte zuverlässig zu automatisieren.

    Meine Fragen:

    1. Wie kann ich herausfinden, welche Befehle oder Funktionen hinter den Buttons der Herstellersoftware stehen, um diese per Skript auszulösen?
    2. Gibt es zuverlässige Möglichkeiten, Eingaben in die Textfelder der Software zu machen?

    Software vorbereiten:

    • Ich starte und bereite die Herstellersoftware vor. Die Software öffnet mehrere kleine Fenster, die sich nur innerhalb des Hauptsoftware-Fensters verschieben lassen (z. B. Controller.Parameter.Konfiguration, Controller.Parameter.Einstellungen und Controller).
    • Parallel arbeite ich mit meiner Excel-Datei, in der ein Makro integriert ist

    Vorgehen bei einem Versuch

    1. Eingabe der Parameter
      1. Fenster: Controller.Parameter.Konfiguration
        Messimpulsdauer (Zahlenwert zwischen 1.7 und 3.0)
        Maximale Messpausen (ein Zahlenwert zwischen 0 und 10)
        Eventuell kann ich die Werte ja in ein Array oder in einer CSV Datei bereit stellen?
      2. Fenster: Controller.Parameter.Einstellungen
        Schweißtemperatur: (Zahlenwert zwischen 150 bis 500)
        Eventuell kann ich die Werte ja in ein Array oder in einer CSV Datei bereit stellen?
    2. Export Parameter
      1. Menü band: Komunikation => Parameter => Exportiren
      2. Datei Speichern unter Fenster
        Dateinamen: par.csv
        Speicherort: Desktop
        OK bestätigen
      3. Neues Fenster (Meldung das Daten gespeichert wurden) mit OK bestätigen
    3. Alte Daten Löschen
      1. Menü band: Komunikation =>Aufzeichnung => Neu
      2. Neues Fenster mit NEIN bestätigen (abfrage ob die alten Daten gespeichert werden sollen)
        Wenn es keine Daten gibt die gespeichert werden könnten kommt kein neues Fenster!
    4. Aufzeichnung Aktiviren
      1. Menü band: Komunikation => Betriebsart => Bust
    5. Jetzt muss ich von Hand den Test durchführen an der Anlage
    6. Aufzeichnung Exportiren
      1. Menü band: Komunikation => Betriebsart => Empfang
      2. Menü band: Komunikation => Aufzeichnung => ASCII-Export
      3. Datei Speichern unter Fenster
        Dateinamen: d.csv
        Speicherort: Desktop
        OK bestätigen
      4. Neues Fenster (Meldung das Daten gespeichert wurden) mit OK bestätigen
    7. Jetzt im Excel das Makro ausführen

    Und dann das ganze von vorne 😊

    Gruß Mücke

  • Hallo zusammen,

    ich versuche aktuell, mit Au3Info.exe die Sprache einer Herstellersoftware umzustellen. Dazu müsste ich ein paar Klicks im Menüband der Software automatisieren, aber irgendwie bekomme ich das nicht hin. 😔 Dachte das ist ein gute Übung da dieser ablauf bei den anderen dingen öfft ähnlich ist.

    Kann es sein, dass ich einen Fehler im Vorgehen habe? Oder gibt es etwas Spezielles, das ich bei der Nutzung von Au3Info beachten muss?


    Mein Bisheriger Code:


    Wo klicke ich?


    Ich habe das Fadenkreuz auf die Sprache gesetzt und dann einen Screenshot gemacht:


    Aber die Sprachauswahl funktioniert nicht, was mir sagt, dass der Klick nicht funktioniert hat. (das müssteein neues Fenster sein)


    Wie kann ich im Menü etwas anklicken?


    Gruß Mücke

    2 Mal editiert, zuletzt von Muecke_1982 (30. November 2024 um 09:59)

  • Um Ribbons zu automatisieren empfiehlt sich das UI Automation Framework wie hier beschrieben.
    Hab's selbst noch nie verwendet, aber was von LarsJ kommt, hat Hand und Fuß.

  • Ok, das hört sich auf den ersten Blick ganz gut an, was ich da gelesen habe.

    Ich werde versuchen, die Erweiterung in AutoIT einzubauen und mal einen Test mit einem der Beispielprogramme zu machen.

    Bisher ist mir noch nicht ganz klar, was ich wo einfügen muss. :(

  • Ok, ich werde es versuchen, denn ich verstehe noch nicht viel.

    Ich habe mir die V70 runtergeladen und alles in den Include-Ordner gepackt, aber alle Beispiele, die ich ausführe, bringen immer nur einen Fehler :-(.

    Da muss ich noch ein bisschen arbeiten.

  • Hi Muecke_1982 👋 ,

    solche RibbonBars können meist auch per Tastenkombination gesteuert werden. Also zumindest ist dies bei den Office-Produkten so (gewesen). Bekommst du vielleicht Buchstaben angezeigt, wenn du die Anwendung im Fokus hast und per ALT Taste in der RibbonBar navigieren möchtest? Falls ja, könntest du dir ggf. UIA sparen und "einfach" darüber gehen. Ansonsten ist das schon einer der besten Ansätze (UIA), wenn auch nicht gerade der Einstiegsfreundlichste 🤔 .

    Ich drücke dir die Daumen.

    Viele Grüße
    Sven

  • Hallo alle zusammen,

    SOLVE-SMART Das mit den Tastenkombinationen war meine erste Idee, aber leider habe ich keine gefunden und auch im Handbuch nichts dazu :(

    BananaJoe & water Vielen Dank für den Tipp mit dem UI Automation Framework.

    Leider muss ich mir, glaube ich, eingestehen, dass ich es nicht verstehe, je mehr ich versucht habe, es zu verstehen, desto mehr verstehe ich es nicht, und ich habe kein Beispiel zum Laufen bekommen, ich weiß überhaupt nicht, wo der Anfang ist und was ich eigentlich richtig machen soll.

    Ich glaube nicht, dass ich mehr getan habe, als die Version V7.0 herunterzuladen und alles in den Include-Ordner zu kopieren (mit diesem Schritt glaube ich zumindest, dass ich es richtig gemacht habe).


    VG Mücke

  • Bekommst du vielleicht Buchstaben angezeigt, wenn du die Anwendung im Fokus hast und per ALT Taste in der RibbonBar navigieren möchtest?

    Hast Du das schon probiert, wie von Solve-Smart vorgeschlagen?
    Entweder sollten Buchstaben angezeigt werden (z.B. R unter dem Tab "Start" wie in Office). Dann sendest Du Alt R an die Anwendung. Oder Du bekommst den Buchstaben unterstrichen. Dann ebenfalls Alt R senden.

  • Hier ein kleines Beispiel von mir. Du musst so gesehen hierarchisch dort von Anfang an dorthin navigieren, kannst dir aber bestimmte Bereiche als $Parent speichern um von dort in eine andere Richtung zu suchen. Sprich wenn du ein Tree-Item möchtest, musst du erst mal das 1. Fenster referenzieren vom Desktop oder der Anwendung an sich heraus. Dann das darin liegende Fenster in dem der Tree liegt und dann vom Tree aus in die Zeilen und dort dann erst das finale Item suchen. Du kannst auch direkt vom Parent bis zum Item in einer Build condition und search condition suchen, das verursacht aber unnötigen Headspace da er alles scannen muss weil er das was du willst im $Parent nicht kennt und er vom angegebenen Parent aus dann solange Childs untersucht bis er es hat. Daher lieber den richtigen Referer bereits lokalisieren und nutzen, sprich hierarchich dorthin navigieren, siehe Beispiel 2.

    Das Program UIA_Spy hilft dir dabei fast alles auszulesen, es kann auch Code erstellen, finde ich aber nicht so effizient gestaltet.

    Hier noch ein paar Beispiele mit Builder-Funktionen von mir selbst, schon lange her das ich diese benutzt hatte:

    Sorry für die Unordnung, grade schnell alles hier zusammengefügt zum präsentieren. Vlt. verstehst du es so.


    Einmal editiert, zuletzt von SOLVE-SMART (26. November 2024 um 07:45)

  • Hast Du das schon probiert, wie von Solve-Smart vorgeschlagen?
    Entweder sollten Buchstaben angezeigt werden (z.B. R unter dem Tab "Start" wie in Office). Dann sendest Du Alt R an die Anwendung. Oder Du bekommst den Buchstaben unterstrichen. Dann ebenfalls Alt R senden.

    Ja, habe ich, leider kommt nichts, habe auch einige Tastenkombinationen ausprobiert, um zu sehen, ob was geht, leider ohne Erfolg.

  • Hier ein kleines Beispiel von mir. Du musst so gesehen hierarchisch dort von Anfang an dorthin navigieren, kannst dir aber bestimmte Bereiche als $Parent speichern um von dort in eine andere Richtung zu suchen. Sprich wenn du ein Tree-Item möchtest, musst du erst mal das 1. Fenster referenzieren vom Desktop oder der Anwendung an sich heraus. Dann das darin liegende Fenster in dem der Tree liegt und dann vom Tree aus in die Zeilen und dort dann erst das finale Item suchen. Du kannst auch direkt vom Parent bis zum Item in einer Build condition und search condition suchen, das verursacht aber unnötigen Headspace da er alles scannen muss weil er das was du willst im $Parent nicht kennt und er vom angegebenen Parent aus dann solange Childs untersucht bis er es hat. Daher lieber den richtigen Referer bereits lokalisieren und nutzen, sprich hierarchich dorthin navigieren, siehe Beispiel 2.

    Ok, ich glaube ich weis was du meinst, ... auch wenn es sich sehr Abstrakt für mich noch anhört.


    Das Program UIA_Spy hilft dir dabei fast alles auszulesen, es kann auch Code erstellen, finde ich aber nicht so effizient gestaltet.

    Das habe ich auch gelesen, aber ich habe das Programm UIA_Spy nicht zum Laufen bekommen :-(.
    Es war auch nicht im Download der Version 70 enthalten, und auf einer anderen Seite hatte ich was zum Download gesehen, aber da war so viel und ich habe gar nicht mehr verstanden, was ich machen soll. (Kurzum, ich glaube ich habe das Programm noch nicht auf dem Rechner, ich muss nochmal suchen).


    Sorry für die Unordnung, grade schnell alles hier zusammengefügt zum präsentieren. Vlt. verstehst du es so.

    Das muss ich mir heute Abend nach der Arbeit mal anschauen, bisher sieht das für mich alles wie Chinesisch aus.


    Spoiler anzeigen

    PS. Die Software des Herstellers ist "kostenlos", wenn man bei denen Kunde ist, wenn es jemand Langweisig ist und damit etwas spielen möchte, könnte ich sie zur Verfügung stellen ;)

    Vielen Dank für die Informationen, ich werde mir das heute Abend ansehen und es noch einmal versuchen.

  • Falls dir Muecke_1982 trotz den guten Ideen, Hinweisen und Beispielen der Umgang mit UIA schwer fällt und du nicht vorwärts kommst, kannst du auch einen Ansatz über relative Koordinaten ausprobieren. Wichtig ist, dass du hierbei das Ausgangsfenster immer gleich groß darstellen lässt und die Position des Fensters bestenfalls auf 0, 0 setzt. Beides ist mit WinMove() erreichbar. Dies erhöht die Robustheit deines programmitischen Ablaufs enorm.

    Schau dir gern auch die Opt-Einstellungen ein. ==> "GUICoordMode" und "MouseCoordMode".
    Ist nicht die schönste Variante und auch nicht sehr flexibel, doch falls alle Stricke reißen, geht es damit mit Sicherheit.

    Viele Grüße
    Sven

  • Statt UIA_Spy kannst Du auch alternativ Inspect von Microsoft verwenden (ich habe die Version 7.2.0.0 von 2012, das gibt Dir auch die Infos).

    Ok das mit dem UIA_Spy habe ich nicht hin bekommen. dafür habe ich mir das Inspect von Microsoft bzw. das Windows SDK Heruntergeladen und dann die Datei "Inspect.exe" auf meinem Rechner gesucht. das hat geklappt und das Program hat sich auch Starten lassen, das hat allerlei Infos für alle möglichen Fenster nun.


    Jetzt muss ich mir anschauen welche Infos ich benötige und was ich wo rein Schreiben muss (aufrufen muss) damit ich welchen Knopf gedrückt bekomme.

    Einmal editiert, zuletzt von Muecke_1982 (30. November 2024 um 10:01)

  • Ich habe es geschafft zu überprüfen, ob das Fenster existiert oder nicht.

    Jetzt habe ich festgestellt, dass je nachdem welches Fenster in der Herstellersoftware aktiv ist, mein Hauptfenster anders heißt :( und wenn das falsche Unterfenster aktiv ist, kann ich das Hauptfenster nicht mehr finden :-(.

    mein Code:


    Auf welchen Wert muss ich bei "inspect.exe" achten, damit ich das Fenster trotzdem finde, egal was ich anklicke?

    Einmal editiert, zuletzt von Muecke_1982 (30. November 2024 um 10:02)

  • Dank GPT habe ich ein kleines Programm, mit dem ich mir alle geöffneten Fenster mit dem Suchbegriff "...." ausgeben lassen kann.

    Leider werden nicht alle Fenster ausgegeben, die ich auf dem Monitor sehe.

    Was mache ich falsch?

    Code:


    Ausgabe:

    Zitat

    Offene ....-Fenster:
    Titel:.....au3 - SciTE-Lite | Handle: 0x001307A6
    Titel: .... V3.11 - Controller | Handle: 0x0008064C
    Titel: GDI+ Window (.....exe) | Handle: 0x0005078C


    Offene Fenster.

    Einmal editiert, zuletzt von Muecke_1982 (30. November 2024 um 10:03)

  • Warum machst Du nicht folgendes:

    Dein Script ruft die Software auf, dann kannsst Du auch den Fensternamen festlegen,

    dann positionierst und dimmensionierst Du das Fenster, dann bestimmst du die Positionenn der Menüpunkte und schon kannst Du mit der Maus alles ansteuern... da ja nun die Positionen der Menüpunkte immer gleich sind...mache ich seit Jahren mit einer Branchensoftware.

    Gruss Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)