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.