Probleme beim Auswerten von Checkboxen

  • Probleme beim Auswerten von Checkboxen


    Hallo,
    ich habe da ein Problem mit dem auswerten von Checkboxen in einem TreeView.
    Ich wollte das einmal das mit den GUICrtlTreeView_-Befehlen, in der AutoIt-Version 3.2.10.0 ausprobieren.

    Dazu habe ich mir, zu Testzwecken, ein kleines Script mit AutoIt geschrieben, das den Zustand von Checkboxen, die sich in einem SysTreeView befinden, auslesen, ändern usw. kann.

    Ich habe dieses Script, natürlich entsprechend angepasst, bei einigen Installationsprogrammen ausprobiert (z.b. mit Winamp 5.2) da funktioniert es mit den "_GUICrtlTreeView_"- Befehlen immer wie ich es will.

    Aber wenn ich dieses Script bei diesem Fenster zum ändern der Ordneroptionen in Windows XP einsetze, so geht da nichts.
    Es lässt sich keine Checkbox auslesen oder ändern.

    Ist das irgendein besonderes Fenster, das man irgendwie anders ansprechen muss ?
    Ich probiere jetzt schon seit einigen Tagen an dem Problemchen herum, aber es geht einfach nichts.

    Hier nun das Script für die Ordneroptionen, mit Erläuterungen zu den Befehlen die ich da verwendet habe:

    Spoiler anzeigen

    ; Die angegebene Datei in dieses Script einbinden, damit die Funktion zu automatischen suchen in einem 'TreeView' auch funktioniert.
    #include <GUITreeView.au3>

    ; Den zu im Befehl „_GUICrtlTreeView_FindItemEx“ zu verwendenden Datenseperator festlegen.
    Opt('GUIDataSeparatorChar’, '\')

    ; Das Dialogfeld zum ändern der 'Ordneroptionen' aufrufen.
    Run('RunDll32.exe shell32.dll,Options_RunDLL 0’)
    ; Warten bis das Fenster existiert.
    WinWait('Ordneroptionen', 'Allgemein')
    ; Dieses Fenster aktivieren.
    WinActivate('Ordneroptionen', 'Allgemein')
    ; Warten bis das Fenster aktiviert ist.
    WinWaitActive('Ordneroptionen', 'Allgemein')
    ; Einmal 'Pfeiltaste nach rechts' an das TabControl (SysTabControl321 = ID 12320) senden um die Registerkarte zum ändern der Ansicht aufzurufen.
    ControlSend('Ordneroptionen', 'Allgemein', 12320, '{Right}')
    ; Warten bis das Fenster der Registerkarte 'Ansicht’ existiert.
    WinWait('Ordneroptionen', 'Ansicht')
    ; Dieses Fenster aktivieren.
    WinActivate('Ordneroptionen', 'Ansicht')
    ; Warten bis das Fenster aktiviert ist.
    WinWaitActive('Ordneroptionen', 'Ansicht')
    ; Das Handle des TreeView( durch seine ID angegeben) im angezeigten Fensters ermitteln.
    $TreeHandle = ControlGetHandle('Ordneroptionen', 'Erweiterte Einstellungen:', 30120)
    ; Das Handle des Items (mit der Checkbox) ermitteln.
    $IHandle = _GUICtrlTreeView_FindItemEx($TreeHandle, 'Dateien und Ordner\Geschützte Systemdateien ausblenden (empfohlen)')
    ; den Zustand dieser Checkbox ermitteln.
    $Neu = _GUICtrlTreeView_GetChecked($TreeHandle, $IHandle)
    ; Denn Zustand ausgeben.
    MsgBox(0, 'Test', 'Der Zustand ist :' & $Neu)
    ; Das Script beenden.
    Exit

    Vielleicht kann ja einer daran sehen, woran es liegt und mir den Fehler nennen. 

    Der Befehl „_GUICrtlTreeView_FindItemEx....” gibt zwar so ein Item Handle (in der Variablen „Ihandle“) zurück, nur damit können die nachfolgenden Befehle nichts anfangen (ändert man den Suchstring, so gibt der Befehl einen Fehler {0} zurück). 

    Ich habe dies auch mit der neuen Beta Version 3.2.11.0 von AutoIt versucht, das Ergebnis ist damit das gleiche, es geht auch nicht. 

    (mit der alten Version 3.2.8.2 von AutoIT und der Au3Lib {mit einem entsprechend angepassten Script} funktioniert es aber). 

    Löscht man den kompletten Include-Ordner aus AutoIt 3.2.10.0 und ersetzt ihn durch den Include-Ordner der AutoIt-Version 3.2.8.2 (und versucht es wieder (auch mit den entsprechend angepassten Befehlen) so geht es auch. 

    Das Problem liegt also irgendwo in den Include-Dateien der Version 3.2.10.0. 

    Da ich inzwischen erfahren habe, das dieses Problem wohl ein Fehler in AutoIt ist, poste ich nun mein Problem in diesem Board (das Problem betrift auch die neuste Beta-Version von AutoIt).

    Vielen Dank für die Hilfe.

    Gruß:
    BigRox

    P.S. Auch mit dem Befehl “ControlTreeView('Ordneroptionen’, 'Erweiterte Einstellungen:’, 30120, 'Exists’, 'Geschützte Systemdateien ausblenden (empfohlen)’)“, geht es nicht.

  • Hallo.

    Also bei mir geht es so:
    Habe 2x " statt '

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include<GuiTreeView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Die angegebene Datei in dieses Script einbinden, damit die Funktion zu automatischen suchen in einem 'TreeView' auch funktioniert.

    [/autoit] [autoit][/autoit] [autoit]

    ; Den zu im Befehl „_GUICrtlTreeView_FindItemEx“ zu verwendenden Datenseperator festlegen.
    Opt("GUIDataSeparatorChar", "\") ; " statt '

    [/autoit] [autoit][/autoit] [autoit]

    ; Das Dialogfeld zum ändern der 'Ordneroptionen' aufrufen.
    Run("RunDll32.exe shell32.dll,Options_RunDLL 0") ; " statt '
    ; Warten bis das Fenster existiert.
    WinWait('Ordneroptionen', 'Allgemein')
    ; Dieses Fenster aktivieren.
    WinActivate('Ordneroptionen', 'Allgemein')
    ; Warten bis das Fenster aktiviert ist.
    WinWaitActive('Ordneroptionen', 'Allgemein')
    ; Einmal 'Pfeiltaste nach rechts' an das TabControl (SysTabControl321 = ID 12320) senden um die Registerkarte zum ändern der Ansicht aufzurufen.
    ControlSend('Ordneroptionen', 'Allgemein', 12320, '{Right}')
    ; Warten bis das Fenster der Registerkarte 'Ansicht’ existiert.
    WinWait('Ordneroptionen', 'Ansicht')
    ; Dieses Fenster aktivieren.
    WinActivate('Ordneroptionen', 'Ansicht')
    ; Warten bis das Fenster aktiviert ist.
    WinWaitActive('Ordneroptionen', 'Ansicht')
    ; Das Handle des TreeView( durch seine ID angegeben) im angezeigten Fensters ermitteln.
    $TreeHandle = ControlGetHandle('Ordneroptionen', 'Erweiterte Einstellungen:', 30120)
    ; Das Handle des Items (mit der Checkbox) ermitteln.
    $IHandle = _GUICtrlTreeView_FindItemEx($TreeHandle, 'Dateien und Ordner\Geschützte Systemdateien ausblenden (empfohlen)')
    ; den Zustand dieser Checkbox ermitteln.
    $Neu = _GUICtrlTreeView_GetChecked($TreeHandle, $IHandle)
    ; Denn Zustand ausgeben.
    MsgBox(0, 'Test', 'Der Zustand ist :' & $Neu)
    ; Das Script beenden.
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Alina,

    danke für deine Hilfe.

    Ich habe das Script mit deinen Änderungen eben ausprobiert, es geht bei mir aber leider auch nicht.

    Das Ergebniss, ist genau das gleiche wie vorher.

    Der Befehl „_GUICrtlTreeView_FindItemEx....” gibt zwar auch wieder so ein Item Handle zurück, nur damit können die nachfolgenden Befehle immer noch nichts anfangen. 

    Was für welche Versionen von AutoIt verwendest du eigentlich ?

    Oder könnte dies auch ein Problem mit der verwendeten Version von Windows XP sein ?

    Ich verwende da Windows XP Professional SP2 "2600.xpsp_sp2_rtm.040803-2158".

    Gruß:

    BigRox

  • Hallo BigRox.

    Also ich verwende auf diesem PC hier XP-Prof. mit SP-2 und allen Updates.
    AutoIt die aktuelle Version.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Alina,
    ich habe das mit den Checkboxen eben nocheinmal ausprobiert, es hat wiederum nicht geklappt.

    Ich verwende Windows XP Professional SP2 mit den neusten Sicherheitsupdates des nLite Updatepacks 1.2008 (die neuste Version).
    Dieses Updatepack enthält alle seit dem SP2 erschienenen Sicherheitsupdates, aber keine Optionalen Updates.
    Die Sprachversion meines Betriebssystemes ist deutsch.

    Ich habe es mit den AutoIt-Versionen 3.2.10.0 und den neuen Beta 3.2.11.0 in deutsch und englisch ausprobiert, es ging nie.

    Ich vermute aber, es liegt am Betriebssystem, da wird wohl irgendeine API-Funktion in der deutschen Sprachversion anders geschrieben und AutoIt erkennt das nicht mehr.
    (mit der AutoIt-Version 3.2.8.2 und er Au3Lib geht es dagegen einwandfrei, nur darf mann dann sein Script keinesfalls mit den neusten AutoIt-Versionen öffnen).

    Gruß:
    BigRox

  • Bei mir gehts auch.. XP MedaiCenter Deutsch..
    Build 2600.xpsp_sp2_gdr.070227-2254 (Service Pack 2)

    • Offizieller Beitrag

    Kann das Nicht-Funktionieren bestätigen unter:
    AutoIt 3.2.10.0
    - XP Home SP2
    - XP Pro SP2

    Bei gleicher Hardware unter Vorgängerversion AutoIt mit Au3Lib funzt es bei mir auch.
    Aus meiner Sicht ein klarer Bug. Kannst du ja mal im EN-Bugforum posten.
    Allerdings mach ich dir nicht viel Hoffnung. Die sind dort gleich sowas von beleidigt, wenn man einen Bug vermutet.
    Du bekommst dann wahrscheinlich die umfangreiche Antwort: This is no Bug. :wacko: