Windows Anwendung per AutoIt fernsteuern

  • Hallo Forum,

    habe die Aufgabe bekommen eine Anwendung (ziemlich viele Windows-Forms/Controls im Frame-Stil) fernzusteuern. Nach einigen Recherchen bin ich "wieder" auf AutoIt gestoßen ^^

    Mein Problem ist:

    i. ich bin nicht 100% fit in AutoIt

    ii. Kann bei den unterschiedlichen Client Bereichen / Controls nicht alles so steuern damit es gut funktioniert.

    Ein Beispiel: Es ist durchaus möglich mittels ControlSend($WinTitle1, "", "[CLASS: Edit ... ]" ein Control zu mainpulieren, scheitere aber dann daran in der Conrollgruppe einen OK Button per AutoIt zu drücken.

    Die Anwendung ist relativ komplex und "verschachtelt" und ich kann die Informationen welches mir das AutoIt Windows Info Tool liefert nicht 100% interpretieren.

    Meine Fragen:

    i. Macht es überhaupt Sinn komplexe und "verschachtelte" Anwendungen mittels AutoIt "script-zu-steuern", oder gibt es hier Grenzen. Z.B. gibt es Controls welche über AutoIt garnicht manipulierbar sind.

    ii. Gibt es ein User Guide (auch gerne in Englisch) welches die Script-Steuerung der Controls erklärt (am besten so detailliert wie möglich). Bin auch gerne bereit für ein sinnvoles Guide / eBook usw. zu zahlen. Das Anfänger Tutorial ist klasse, beschreibt leider mein "Script-Steuerung der Controls" Problem nur am Rande oder garnicht.

    Vielen Dank!

    reredok

  • Also ich weiß jetzt nicht genau was du schon gelesen hast aber empfehlen würde ich in deinem Fall in der Autoit Hilfe unter "Allgemeines zu Autoit" die Punkte:
    • Autoit Window Info Tool
    • Fenstertitel und texte (Grundlagen+erweitert)
    • Controls
    In peethebee's Buch den Punkt 4.4 (Link zum Buch siehe Signatur)
    Außerdem die Hilfeseiten zu den Control...()-Funktionen. (Je nachdem welche du benötigst)

    Standard Windows-Controls lassen sich egtl problemlos ansteuern.
    Nicht-Standard-Controls lassen sich teilweise mit speziellen UDF's ansteuern oder manchmal leider auch garnicht.

    Welche GUI sollst du denn ansteuern? Kannst du uns die vllt zur Verfügung stellen?

    Probleme:
    Zu i.:
    Das sollte nicht das Problem sein ;)

    Zu ii.:
    Funktioniert es nicht mit ControlClick()?
    (Alternativ funktioniert teilweise ControlSend() mit "{Enter}")

    Wo hast du Probleme beim Interpretieren?
    (Oft hilft es störende Controls wegzuschieben um an die Controls ranzukommen die man braucht, mit Controlmove() kann man evtl störende wegschieben)

    Fragen:
    zu i.:
    Kommt darauf an ob du alternative Möglichkeiten hast und wie komplex das ganze ist.
    Controls die per Autoit nicht ansteuerbar sind gibt es, manchmal kann man aber etwas tricksen damit man es zum laufen bringt.

    zu ii.:
    Siehe oben. Das ist so das Lesematerial was mir spontan einfällt.
    Ansonsten musst du dich auf die Kompetenz der Leute hier im Forum verlassen ;)

  • Viele Dank für die Rückmeldung.

    Bei der Anwendung handelt es sich um die Datev Nutzungskontrolle welche an einen SQL und Lizenzserver gebunden ist. Deswegen kann ich die Anwendung nicht zur Verfügung stellen.

    Wie gesagt, ich glaube dass ich meine Interpretationfähigkeit bzgl. dem "AutoIt Windows Info Tool" noch trainieren muss ^^

    Es ist eine MDI Anwendung die ziemlich viele SDI innerhalb einer Frame öffnet. Das mit dem OK Button 'ControlSend($WinTitle2 , "", "[CLASS:Button; INSTANCE:8]", "{ENTER}")' hat übrigens im x.ten Anlauf geklappt.

    Ich denke dass sich hier im Forum viele AutoIt Entwickler schon mit dem Thema "Fernsteuern von Windows Controls" beschäfigt haben. Vllt hat ja jemand eine "Vorgehensweise" z.B. Word oder Windows Explorer wie man dort alle möglichen Controls, Listboxes, Button, Menus fernsteuern kann.

    Wenn es für euch im Forum in Ordnung ist kann ich ja mal ein komplettes Control inkl. Autoit Windows Info Tool per Bilddatei reinstellen. Möchte aber euere Zeit bzw. euren Speicherplatz nicht unnötig strapazieren ^^

    Noch eine kliene Frage: Mir ist als AutoIt-Noob folgendes aufgefallen. Vllt mach ich etwas falsch.

    Schon das kleinste Codefragment (bei mir ca. 1,5 Din-A-4 Seiten) produziert schon eine 500kB Exe mit mittlerer Laufzeit (Geschwindigkeit). Da mein Projekt erst in der Entwurfsphase steckt bekomme ich allmählich Platzangst.

    Danke

  • Schon das kleinste Codefragment (bei mir ca. 1,5 Din-A-4 Seiten) produziert schon eine 500kB Exe mit mittlerer Laufzeit (Geschwindigkeit). Da mein Projekt erst in der Entwurfsphase steckt bekomme ich allmählich Platzangst.


    das liegt daran das AutoIt eine Interpreter-Sprache ist und die ausfüghrbare EXE immer den kompletten Interprtercode enthält, dein Skript und natürlich alle darin eingebunden Includes. Aber keine Angst, da der Interpreter und jedes Include nur einmal eingebunden wird, nimmt die Größe nicht proportional zu deinem Source zu.

    mfg autoBert