Control - oder dessen Instanz - per Text finden? - ANFÄNGER

  • Guten Abend verehrte AutoIt Profis,
    ich möchte eine bestimmte Postion auf einer Symbolleiste anklicken. Das Klicken auf das von mir benötigte Ereignis schaffe ich, es scheitert jedoch an der zuverlässigen Feststellung der Koordinaten der Symbolleiste, weil ihre Instanz beim erneuten Öffnen des Programmes wechselt. Ich war schon "stolz", dass ich herausgefunden habe, dass ich mit "ControlGetPos" die Koordinaten der Leiste finden kann, da das jedoch ohne die korrekte Instanz nicht klappt, bin ich mit meinem Anfänger-Latein am Ende und würde mich sehr über eine "laien-verständliche Hilfe" freuen!

    Mein Beispiel:

    $pos = ControlGetPos("Microsoft PowerPoint","Duden Korrektor","MsoCommandBar2") => damit bekomme ich bei $pos[0] und [1] die korrekten x und y Koordinaten.

    lasse ich die Instanz weg: ControlGetPos("Microsoft PowerPoint","Duden Korrektor","") => werden falsche Werte für die Koordinaten geliefert

    Das Problem: Die Instanz wechselt beim Öffnen und Schließen von PowerPoint, mal ist es "MsoCommandBar2", manchmal aber auch 3 oder 4.


    Meine Frage:

    Gibt es eine Möglichkeit, ein Control (dessen Koordinaten) nur über den Text zu finden - in meinem Beispiel: "Duden Korrektor" bzw. mit diesem Text die Instanz herauszufinden?


    Hier ein Ausschnit der Window-Info: Die blauen Texte sind immer konstant, die Instanz (in Rot) wechselt leider, deswegen bekomme ich es nicht hin ... :(

    >>>> Window <<<<
    Title: Microsoft PowerPoint - [Präsentation1]
    Class: PP9FrameClass
    Position: -4, -4
    Size: 1688, 944
    Style: 0x17CF0000
    ExStyle: 0x00000100
    Handle: 0x000C064E

    >>>> Control <<<<
    Class: MsoCommandBar
    Instance: 2
    ClassnameNN: MsoCommandBar2
    Name:
    Advanced (Class): [CLASS:MsoCommandBar; INSTANCE:2]
    ID:
    Text: Duden Korrektor
    Position: 113, 75
    -------------------------------------------------------------------------------------------------------


    Besten Dank im Voraus!

    Michael

    Einmal editiert, zuletzt von kilo (24. November 2013 um 01:16)

  • Der Text Parameter gilt für das Fenster, in dem sich das Control befindet, nicht das Control selbst. Das steht auch in der Hilfe zu diesem Befehl. ;)
    Du kannst aber das hier versuchen:

    [autoit]

    $aPos = ControlGetPos("Microsoft Power Point", "", "[CLASS:MsoCommandBar;TEXT:Duden Korrektor;]")
    ConsoleWrite($aPos[0] & @TAB & $aPos[1] & @CRLF)

    [/autoit]
  • Super, es funktioniert! War mir unbekannt, dass man Class und Text so kombinieren kann.

    Ganz recht herzlichen Dank!

    Einmal editiert, zuletzt von kilo (24. November 2013 um 01:16)