Das hole ich so...
Das funktioniert auch beim Click sehr gut
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.
Das hole ich so...
Das funktioniert auch beim Click sehr gut
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
MsgBox(1,"OK",$CBxExtendReport) ; Die ID ist hier OK
If BitAnd( GuiCtrlRead( $CBxExtendReport ), $GUI_CHECKED ) = $GUI_CHECKED Then
MsgBox(1,"CHECKED","")
Else
MsgBox(1,"NOT CHECKED","")
EndIf
ODER *************************************************************************
MsgBox(1,"OK",$CBxExtendReport)
If GUICtrlRead($CBxExtendReport) = 1 Then
MsgBox("","","Checkbox ist checked")
Else
MsgBox("","","Checkbox ist NICHT checked")
EndIf
ODER *************************************************************************
$Status =ControlCommand ( "NTS", "", $CBxExtendReport, "IsChecked", "" )
MsgBox(1,"STatus",$Status)
Alles anzeigen
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