Wechselnde Button in dynamischer Toolbar ansprechen

  • Die Anwendung die ich steuern möchte hat eine dynamische Toolbar. Das heißt, je nach gerade ausgelöster Funktion werden Button in der Toolbar ausgetauscht. Es gibt aber 10 "statische" Button, die immer zu sehen sind.

    Au3Info.exe ermittelt nur die Control ID der Toolbar und die Command ID der statischen Button. Wie kann ich die Command ID der Button ermitteln, die je nach Aktion ausgetauscht werden?
    Ziel ist es den folgenden Befehl zu verwenden:

    ControlCommand("[CLASS:App]","",101,"SendCommandID",233) ;ControlID=101, CommandID=233

    Die andere Möglichkeit über die ControlClick Koordinaten kenne ich auch, gefällt mir aber nicht so richtig.

    ControlClick("[CLASS:App]","","[CLASS:ToolbarWindow32; INSTANCE:1]","Left",1,279,14) ;x=279, y=14

  • Hallo ,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Problem:

    Au3Info.exe ermittelt nur die Control ID der Toolbar und die Command ID der statischen Button. Wie kann ich die Command ID der Button ermitteln, die je nach Aktion ausgetauscht werden?

    Da wirt du dir einmal die Mühe machen müssen, alle diese Aktionen mehmals in unterschiedlicher Reihenfolgeaufzurufen, die ControlID ermitteln und auch prüfen ob diese jedesmal die gleiche ist, ansonten geht entweder die dir bekannte Methode 2 oder evtl. auch die Button über Classname und Intance anzusprechen,

    mfg autoBert

  • Hallo autoBert,

    danke für Deine Antwort!

    Im ersten Moment hatte ich den selben Gedanken wie Du. Nacheinander per Hand die Funktionen ausführen, bei denen neue Buttons in der Toolbar sichtbar werden, und dann deren Command-ID ermitteln. Genau das aber funktioniert mit meiner Anwendung nicht. Egal ob bzw. welche dynamischen Buttons zu sehen sind, ich kann mit Au3Info.exe immer nur die Command-ID's der statischen Button ermitteln. Die Ausgabe von Au3Info.exe im Karteikartenreiter "Toolbar" ändert sich nicht, es sind immer nur die ID's der statischen Button sichtbar.

    Gibt es einen anderen Weg die Command-ID's der dynamischen Button zu ermitteln?

    • Offizieller Beitrag

    Gibt es einen anderen Weg die Command-ID's der dynamischen Button zu ermitteln?


    Ich habe das bei einer Anwendung ähnlich gehabt. Dort wurden auch interne ID vergeben, die per AutoIt nicht auslesbar und somit ansprechbar waren. Ich hatte das dann per Koordinatenberechnung auf Basis der Toolbar-Koords gelöst. (Basisdaten Toolbar + Pixelbreiten der zwischenliegenden Button)
    Ist zwar nicht so schön wie ein ControlClick, aber in der Not... :whistling:

  • OK, dann werde ich wohl die dynamischen Button auch über die Koordinaten ansprechen müssen.

    Die ControlClick Koordinaten sind ja relative Koordinaten (bezogen auf die jeweilige Applikation). Kritisch dürfte in jedem Fall für das AutoIt-Skript eine Änderung der Bildschirmauflösung sein. Wie kritisch ist die Verwendung unterschiedlich großer Bildschirmfonds?

    • Offizieller Beitrag

    Kritisch dürfte in jedem Fall für das AutoIt-Skript eine Änderung der Bildschirmauflösung sein. Wie kritisch ist die Verwendung unterschiedlich großer Bildschirmfonds?


    Das halte ich für unkritisch. Deine Zugriffskoordinaten müssen halt eine relative Berechnung unter Nutzung der Makros für Desktop -Breite/-Höhe beinhalten. Für die Toolbar erhältst du ja die Controlgröße und kannst anhand der Buttonanzahl die Breite der Einzelbutton berechnen.
    Auch die verwendeten Fonts halte ich für nicht relevant. Wenn die Controlgröße sich relativ zum verwendeten Font ändert, so spielt das für dich keine Rolle, weil du in der Koordinatenadressierung die Controlgröße in der Berechnung dann sowieso einfließen läßt.

  • Hallo BugFix!

    Danke erstmal für Deine Hinweise! Mal schaun was ich damit anfangen kann.