Beiträge von Larsen

    Das hole ich so...

    Code
    $CBxExtendReport=ControlGetHandle("NTS","","[NAME:chkBoxExtendReport]")


    Das funktioniert auch beim Click sehr gut

    Code
    ControlClick("NTS","",$CBxExtendReport)


    Nur ich will ja vorher abfragen, da der Click ja toggelt und ich den definierten Zustand brauche und vorher nicht weiß wie das Ding steht.

    Hallo Experten,


    ich möchte in einem externen Programm ein Control auslesen. Das Ding sieht aus wie eine Checkbox (info unten).
    Ich möchte also abfragen, ob die Checkbox gesetzt ist oder nicht. Leider bis jetzt ohne Erfolg und ich finde auch keinen neuen Ansatz zur Lösung.


    Ausprobiert habe ich



    Was mach ich denn falsch? Die Beispiele die ich gefunden habe sind alle recht einfach und trotzdem bekomme ich immer "UNCHECKED" als Ergebnis.


    Liegt das am Control? Muss das anders abgefragt werde?


    Bin für jeden Tip dankbar !!!


    Gruß
    Lars




    Hier die Informationen zum Control.


    Class: WindowsForms10.BUTTON.app.0.2bf8098_r16_ad1
    Instance: 1
    ClassnameNN: WindowsForms10.BUTTON.app.0.2bf8098_r16_ad11
    Name: chkBoxExtendReport
    Advanced (Class): [NAME:chkBoxExtendReport]
    ID: 1116190
    Text: Extended Report
    Position: 19, 117
    Size: 106, 17
    ControlClick Coords: 43, 10
    Style: 0x5601000B
    ExStyle: 0x00000000
    Handle: 0x0011081E

    Da niemand eine Idee hat, was ich falsch mache, denke ich wirklich, dass das Prog einfach schlecht umgesetzt ist.


    Mein Workaround funktioniert immerhin ganz gut, hab den Code jetzt auch in C# übersetzt und er klappt.


    Also kann ich mich jetzt aufs Automatisieren konzentrieren. AutoIt ist einfach klasse, ich bin jetzt seit einer Woche dran
    und die Ideen hören gar nicht auf zu sprudeln :)


    Gruss Lars

    Habe mittlerweile einen Workaround gefunden, der mich aber nicht wirklich zufrieden macht.


    Wenn ich über die Funktion ControlGetHandleByPos immer die letzte Instanz nehme, die ich finde, passt es.
    Er findet aber auch die "alten" Controls, die eigentlich nicht mehr existieren sollten, da das Fenster geschlossen wurde und
    neu geöffnet ist.


    Ist doch etwas seltsam oder. Ist das Prog, das ich steuern will vielleicht einfach scheiße geschrieben, dass die Controls nicht sauber abgebaut werden oder sowas?


    Gruß
    Lars

    Hallo AyKay,


    danke für deine Antwort!


    Das Programm hab ich nicht weiter benannt, weil es sowieso keiner kennen wird, ist keine Installationsroutine sonder eine
    Diagnosetool aus der Automotive Welt.


    HotKeys haben die Buttons leider nicht und Text ist auch nicht dahinter


    >>>> Control <<<<
    Class: Edit
    Instance: 6
    ClassnameNN: Edit6
    Name:
    Advanced (Class): [CLASS:Edit; INSTANCE:6]
    ID: 394814
    Text:
    Position: 60, 341
    Size: 712, 38
    ControlClick Coords: 230, 21
    Style: 0x54010080
    ExStyle: 0x00100200
    Handle: 0x0006063E


    Welche Möglichkeiten hab ich denn noch, nach Controls zu suchen?
    Komisch finde ich auch noch, dass mir die Funktion _ControlGetHandleByPos, die über alle Controls geht und die angegebene Position abfragt
    den "alten" Handle zurückgibt obwohl dieser laut AutoItWindowInfo nicht mehr richtig ist.


    Bin für jeden Tip dankbar.

    ... habe mich gerde registriert und bin schwer gespannt was mich noch alles zum Them AutoIt erwartet.


    Zu mir:
    Bin SW Entwickler im Automotive Bereich und bin zufällig auf AutoIt gestoßen.
    Das Potential scheint mir riesig zu sein und dementsprechend neugierig bin ich auf das Ganze :)


    Ich hoffe ich stelle nicht zu vielle doofe Fragen und kann vielleicht irgendwann auch mal beantworten.


    Bis dahin, auf gutes Gelingen.


    gruß
    Lars

    Hallo,


    ich bin neu hier und hoffe es kann mir jemand helfen. Auch nach langen Googeln bin ich leider nicht weiter gekommen.


    Hier mein Problem:
    Ich möchte ein Programm steuern, bei dem ich ein Edit Feld beschreibe, dann muss ich zwei Buttons betätigen.
    Das funktioniert soweit ganz gut und war auch nicht schwer.
    ABER
    Jenachdem in welcher Reihenfolge ich die Fenster des Programms öffne oder, wenn ich das Bedienfenster schließe und neu
    öffne, wechselt die Instanz meiner Controls, so dass mein Code nicht mehr funktioniert.


    Das EditFeld spreche ich so an:
    ControlClick("MyTitle", "", "[CLASS:Edit; INSTANCE:6]")
    ControlSend("MyTitle", "", "[CLASS:Edit; INSTANCE:6]", $Befehl)
    Mein Edit Feld hat dann z.B. irgendwann diesen Wert:[CLASS:Edit; INSTANCE:13]


    Die Buttons spreche ich so an:
    ControlClick("MyTitle", "", "[CLASS:Button; INSTANCE:40]")
    Später dann dieser Wert:[CLASS:Button; INSTANCE:111]



    Experimentiert habe ich schon mit folgender Funktion:
    $Out=_ControlGetHandleByPos("MyTitle","",60,341)
    um den Handle abzufragen. Funktioniert beim ersten mal gut aber komischerweise bekomme ich nachdem die Instanz anders
    geworden ist über die Funktion immer noch die "alten" Handle, die dann aber nicht mehr funktionieren.


    Da ich mit dem Thema AutoIt ganz neu und frisch unterwegs bin, hoffe ich, dass mein Problem für euch leicht lösbar ist.
    Im Moment funktioniert mein Code nur, wenn ich das Programm neu starte und das Fenster das ich steuern will als erstes direkt öffne.
    Schließe ich es und öffne es neu geht es nicht mehr. Öffne ich erst ein anderes geht es auch nicht.


    Hat irgendjemand eine gute Idee !!!????!!!!


    Gruß
    Lars