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

  • ich habe mal für das Clicken eine rudimentäre Funktion zusammengefasst.

    Da auch das Klicken in der UI nur ein simulierter Mausklick ist, sehe ich da auch für deinen Fall die Möglichkeit das mit allen Möglichkeiten zu vermischen. Da du auch nur der Einzige bist, der das Script verwendet, sollte das umsetzbar sein.

    Im Anhang mein umgebautes Script, dass dir zumindest die Sprache auf deutsch umstellt.

    Vielleicht kannst du dich daran entlang hangeln.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • mir war nicht bewusst, dass du noch ein "Neuling" in der Automatisierung bist.

    Ich bin nicht nur ein Anfänger, ich bin auch kein Programmierer, ich kann mir einfache Sachen anschauen und ich verstehe halbwegs, was passiert, und ich kann es oft anpassen, aber das ist alles.

    Ich bezweifle auch, dass ich jemals ein Programmierer sein werde.

    Du hast dir da schon eine Herausforderung gesucht, an der ich als Neuling sicherlich verzweifelt wäre.

    Ja, das geht mir auch so.

    Ich habe mir das ausgesucht, weil der Zeitaufwand bei meinen Tests im Ablauf wirklich sehr hoch ist und ich finde, man muss verdammt oft mit der Maus irgendwohin klicken.

    Es ist eigentlich auch sehr ungewöhnlich, dass man so eine große Testreihe mit so einem Gerät macht, aber ich möchte das Gerät zweckentfremden und mir kann niemand sagen, wie es mit meiner Hardware auf welche Parameter reagieren wird, deshalb sind die Tests für die Auswertung wichtig.

    Ich habe mit den ersten Tests begonnen und dann relativ schnell gemerkt, dass ich auch im Ablauf durcheinander gekommen bin und nicht mehr genau wusste, wo ich bin, was dann auch wieder extrem zeitintensiv war, wie sich herausgestellt hat.

    Also hab ich im Internet geschaut wie man Klicks automatisieren kann und da bin ich dann auf AutoIT gestoßen und das was ich gelesen habe (eher Werbung) hat sich so angehört als könnte das mein 6 jähriger Sohn auch schon, aber dem ist leider gar nicht so, musste ich feststellen.

    Wenn sich hier nicht jemand findet, der dir das Thema in einem Workshop aufarbeitet, wrden 2 Std. nicht reichen um den Code zu verstehen.

    Das war auch ehrlich gesagt gar nicht meine Absicht, dass man mir das alles macht und ich bin ein bisschen überwältigt und überwältigt von deinem Engagement, denn das was du da bisher gemacht hast ist der Hammer und viel mehr als ich jemals gedacht hätte!!!

    Und wenn es nicht klappen sollte, dann habe ich auch so etwas wie ein schlechtes Gewissen, denn du hast wirklich viel Arbeit und Mühe da reingesteckt.

    DANKE DAFÜR !!!


    Okay, ich glaube, ich habe das mit dem Baum verstanden, und der Baumstumpf ist dann das Programm selbst, und jeder Ast ist ein neues Fenster mit neuen Verzweigungen.

    Da die Ansteuerung an sich "0" Errorhandling beinhaltet, muss jede Aktion selber abgefangen werden.
    Bequeme Funktionen die einem das abnehmen habe ich bisher nicht gefunden. Ich war schon drauf und dran diese selbst zu schreiben, aber das würde bei mir recht lange dauern. Und da ich mit UI nur gelegentlich zu tun habe, möchte ich mir das nicht antun.

    Meinetwegen musst du das nicht machen!!!

    Ich hoffe, dass ich eine lauffähige Version bekomme, mit der ich meine Tests machen kann, es ist ja nicht so, dass ich das irgendwo als Zusatzsoftware anbieten will!

    Vielleicht reicht ihm am Ende ja doch ein "relativ" robustes Maus-Klicken und fertig 🤔 .

    Das habe ich mir auch schon überlegt und heute auf der Arbeit habe ich GPT gebeten, mir einen Mausklick-Reckorder zu schreiben, der mir alle Klicks auf dem Monitor aufzeichnet und in eine Neue AutoIT Datei schreibt.

    Aber bei dem Aufwand, den Schnuffel uffel bisher betrieben hat, möchte ich seine Möglichkeit nicht ungetestet und probeweise stehen lassen, das fände ich nicht gut!

    ich habe mal für das Clicken eine rudimentäre Funktion zusammengefasst.

    Wow, das ist der Hammer, das werde ich gleich mal ausprobieren und schauen, ob ich mich daran orientieren kann, um den Rest umzusetzen.
    DANKE!!!

    VG Mücke

  • mach dir um meinen/unseren Aufwand keine Gedanken. Wir machen das hier schon lange ( die meisten 10 Jahre+)

    Wenn wir etwas beisteuern ist das immer für die Sache und muss kein schlechtes Gewissen erzeugen. Wir sind froh wenn jemand für sich eine Lösung findet und wir dabei unterstützen konnten.

    Nimm den Ansatz, der dir am nächsten kommt.

    😉

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Schnuffel Wenn Du den Baum kennst, dann kannst du das $TreeScope_Descendants durch $TreeScope_Children ersetzen. Das hat den Vorteil, dass nicht der gesamte Baum durchsucht werden muss und beschleunigt die UI-Automation immens.

    Allerdings musst Du dann wirklich von Child zu Child gehen, ohne etwas zu überspringen. Bei $TreeScope_Descendants können auch Children übersprungen werden, er sucht halt den gesamten Baum ab - ist aber entsprechend langsamer.

  • ich denke da gibt es auch caching Techniken, die das beschleunigen würden. Aber angesichts des Aufwandes und doch eher seltenen Nutzung lohnt sich der Aufwand für mich nicht.

    Ich denke Muecke wäre damit deutlich überfordert. Daher einfache pragmatische Lösungen. 😉

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Ich möchte mich ganz herzlich bei euch bedanken für die großartige Unterstützung, die ich bei meinem Projekt erhalten habe. Anfangs dachte ich, dass es viel einfacher sein würde, und hatte ehrlich gesagt nicht wirklich daran geglaubt, Hilfe zu bekommen. Umso mehr weiß ich eure Unterstützung zu schätzen. DANKE dafür!


    Das Script von Schnuffel funktioniert sehr gut, egal wo das Programm auf dem Monitor geöffnet ist. Leider bekomme ich aber immer wieder Fehler, die vermutlich mit der von euch erwähnten Fehlerbehandlung zusammenhängen.


    Deshalb habe ich mich daran gemacht, die Abläufe per Mausklick zu realisieren. Mit der Hilfe von GPT habe ich etwas hinbekommen, das für meine Zwecke ausreichend ist und kaum Fehler produziert – solange die Umgebung unverändert bleibt.

    Mein Werk, das ich größtenteils mit GPT zusammengestellt habe, habe ich im Anhang beigefügt. Vielleicht hat jemand Lust, drüberzuschauen. Große Änderungen werde ich allerdings nicht mehr vornehmen, da nächste Woche die Tests beginnen und damit das "Spielen" ein Ende hat. 😉


    Hier ist meine GUI, mit der ich den Ablauf steuere:


    VG Mücke

  • wenn das Thema für dich abgeschlossen ist, dann setze doch bitte diesen Thread auf "erledigt".

    Danke ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Hey zusammen,

    ich habe eine Frage: Kann man eine Tastenkombination in ein Programm einbauen, die auch funktioniert, wenn das Programm nicht aktiv ist?

    Mein Problem ist, dass mein Programm Tasteneingaben ausführt, während das Herstellerprogramm aktiv ist. Wenn ich dann auf "Speichern" klicken möchte, muss ich mit der Maus über den gesamten Bildschirm fahren, um in meinem Programm den entsprechenden Button zu drücken. Dabei habe ich immer die Sorge, dass ich mit der Maus unabsichtlich etwas verstelle und dadurch meinen programmierten Ablauf durcheinanderbringe.

    Es wäre super, wenn ich eine globale Tastenkombination wie z. B. "STRG+ALT+Y" nutzen könnte, mit der mein Programm dann die "Speichern"-Funktion ausführt, ohne dass ich das Fenster erst aktivieren muss.

    Hat jemand von Euch eine Idee, wie man das umsetzen könnte?

    Gruß
    Mücke

  • Dazu müsste die Tastenkombination ja erstmal wissen, auf welches Fenster sich das "Speichen" beziehen soll. Um ein aktivieren des Fensters kommst Du da wohl nicht herum...

    Ohne zu verstehen, warum und wiso du das haben willst - ist ein Denkansatz, Du schreibst Dir einen Zweizeiler, der Dir das Fenster aktiv setzt, und die Speichern Taste auslöst.

    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. (Frei nach Albert Einstein)

  • wenn du auf dein Programm "einwirken" willst, ohne dass es aktiv ist,
    würde ich entweder ein Prog als dienst schreiben oder im Tray,
    der mit einem Hook die Tastenkombination abfängt und ausführt.

    Tastatur hooks gibt es ja zu finden auf den autoit Seiten.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Ich hab es so verstanden, dass die "Speichern" Funktion in seinem eigenen Programm angestoßen werden soll und nicht die in dem automatisierten Fenster.

    Also wäre "CTRL+ALT+y":

    AutoIt
    HotKeySet("^!y", "_test")
    
    While Sleep(10)
    WEnd
    
    Func _test()
    	msgbox(48,"","Pressed")
    EndFunc

    Vorsicht mit Großbuchstaben: "^!Y" wäre equivalent zu "CTRL+ALT+SHIFT+Y".

  • Ich hab es so verstanden, dass die "Speichern" Funktion in seinem eigenen Programm angestoßen werden soll und nicht die in dem automatisierten Fenster.

    Öhm, ja genau, sorry! In meinem kleinen Programm heißt die Funktion nicht "Speichern", sondern "Sichern". Das hat wahrscheinlich für Verwirrung gesorgt.

    Es ist korrekt, ich möchte meine eigene Funktion "Sichern" bzw. "Speichern" ausführen, nicht eine aus einem anderen Programm.

    Ich habe gerade den Code von Kanashius getestet, so wie Du es beschrieben hast, und das hat problemlos funktioniert! Ich habe es in Excel ausprobiert (zum Testen, da Excel ein anderes Programm ist), und wenn ich STRG+ALT+y drücke, erscheint die MSGBox. Das werde ich morgen direkt in mein Programm einbauen.

    DANKE!!! Jetzt kann ich nach Weihnachten weiter testen.

    Ich habe bisher über 400 Tests durchgeführt, und dabei konnte ich bei jedem Test über 1,5 Minuten sparen. Aktuell schaue ich auf eine richtig gute Bilanz zurück. DANKE für Eure Unterstützung!

    Ich wünsche Euch allen frohe Feiertage und eine entspannte Zeit mit Euren Liebsten! 🎄✨