1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Larsen

Beiträge von Larsen

  • CheckBox abfragen (eigentlich doch ganz einfach, aber...)

    • Larsen
    • 22. August 2014 um 11:21

    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.

  • CheckBox abfragen (eigentlich doch ganz einfach, aber...)

    • Larsen
    • 21. August 2014 um 22:17

    Hi Phil-IT

    das hab ich ja im dritten Versuch schon stehen, abgesehen vom letzten Parameter

    Code
    $Status =ControlCommand ( "NTS", "", $CBxExtendReport, "IsChecked", "" )
    MsgBox(1,"STatus",$Status)

    Sehr seltsam, irgendjemand eine Idee?

  • CheckBox abfragen (eigentlich doch ganz einfach, aber...)

    • Larsen
    • 21. August 2014 um 15:21

    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

    Code
    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

  • Wechselnde ControlID und Instanz

    • Larsen
    • 15. August 2013 um 23:07

    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

  • Wechselnde ControlID und Instanz

    • Larsen
    • 14. August 2013 um 18:03

    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

  • Wechselnde ControlID und Instanz

    • Larsen
    • 14. August 2013 um 17:08

    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.

  • Hallo

    • Larsen
    • 14. August 2013 um 14:03

    ... 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

  • Wechselnde ControlID und Instanz

    • Larsen
    • 14. August 2013 um 13:40

    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™