Einträge in einem TreeView auslesen

  • Hallo,
    ich möchte feststellen ob ein Eintrag in einem TreeView vorhanden ist. Bei den meisten TreeViews geht das auch mit „$Test = ControlTreeView(Fenster_Titel, Fenster_Text, ID, "Exists", „Item“)“.
    In der Variablen $Test steht dann 1 wenn der Eintrag existiert, und 0 wenn er nicht existiert.

    Nur bei einigen TreeViews (z.B das für die Ordneroptionen von Windows XP), da geht es nicht. Beim ersten Eintrag „Dateien und Ordner“ geht es, aber alle folgenden Einträge existieren anscheinend nicht.

    Hier das Script zum ansehen.

    Spoiler anzeigen

    ; Programmzeilen zum Aufrufen des Fensters.
    Run("RunDll32.exe shell32.dll,Options_RunDLL 0")
    WinWait("Ordneroptionen", "Allgemein")
    ControlSend("Ordneroptionen", "Allgemein", 12320, "{Right}")
    WinWait("Ordneroptionen", "Ansicht")

    ; Suchen des Eintrages und MsgBox ausgeben
    $Test = ControlTreeView("Ordneroptionen", "Erweiterte Einstellungen:", 30120, "Exists", "Dateien und Ordner")
    MsgBox(0, "Test", $Test)

    Exit


    Warum geht das eigentlich nicht ? Auch wenn man die Texte der Items auslesen will, erscheint nur der erste „Dateien und Ordner“, die restlichen sind nicht auszulesen.
    Auch bei z.B. „ffdshow“ gibt es so ein TreeView, bei dem funktioniert es nicht. Dieses TreeView enthält auch nicht nur Checkboxen sondern auch einige RadioButtons. Daher vermute ich, das dieses Problem irgendwie damit zusammenhängt. Oder sind das irgendwie besondere Treeviews ? Aber irgendwie müsste man die doch auch bearbeiten können (z.B. mit einer speziellen Funktion).
    Was mich aber vorallem wundert ist, bei einigen Rechnern geht es auch ohne das man irgendwas besonders machen muss.

    Vielen Dank, für die Hilfe.

    Gruß
    BigRox

  • Du musst die Ebenen mit nehmen:
    "Dateien und Ordner|Ansichtoptionen für jeden Ordner speichern"
    Ebene1|Ebene2|Ebene3...

  • Hallo progandy,
    das mit dem Textauslesen geht jetzt mit z.B. $Test = ControlTreeView("Ordneroptionen", "", 30120, "GetText", "#0|#1")

    Aber wie geht das eigentlich mit "Select", "Check", "Uncheck", "IsChecked" ?

    Wenn ich z.B. das mit "Select", "Item" oder "Check/Uncheck", "Item" ausprobiere, geschieht garnichts und wenn ich das mit "IsChecked" ausprobiere bekomme ich immer -1 zurück (das Item ist keine Checkbox).

    Hier ein kleines Script zum ansehen (Beispiel mit "Select", "Item").

    Spoiler anzeigen

    ; Programmzeilen zum Aufrufen des Fensters.
    Run("RunDll32.exe shell32.dll,Options_RunDLL 0")
    WinWait("Ordneroptionen", "Allgemein")
    ControlSend("Ordneroptionen", "Allgemein", 12320, "{Right}")
    WinWait("Ordneroptionen", "Ansicht")

    ControlTreeView("Ordneroptionen", "", 30120, "Select", "#0|#1")

    Exit

    Gruß:
    BigRox