Explorer Ansicht per Befehl ändern

  • Hallo zusammen

    Ich suche nach einer Möglichkeit, um per Script in Win XP und Win 7 die Explorer Ansicht umzustellen.
    Konkret soll genau 1 vordefinierter Order von Details auf Symbole umgestellt werden.

    Momentan ist das so gelöst, dass ich Tastendrücke simuliere.
    Z.B. Shift+F10 für Kontex Menü, und dann vn für View > Thumbnails.
    Das Problem ist, dass das nicht immer funktioniert. Gerade in virtuellen PCs geht das öfters nicht.
    Dazu muss ich sagen, dass das Script immer beim starten ausgeführt wird, wenn also der PC noch ziemlich beschäftigt ist.

    Ich habe es schon mit diversen Sleep versucht, aber es nie fertig gebracht, dass es IMMER läuft
    Gibt es da keinen eleganteren weg z.B über eine DLLCall oder sonstigen Befehl?

    Vielen Dank für Hilfe!

    • Offizieller Beitrag

    HI,

    hiermit kannst du es probieren. Zumindest alle Ordner auf Details oder so zu setzen sollte klappen.

    Spoiler anzeigen
    [autoit]

    #Region;**** Directives created by AutoIt3Wrapper_GUI ****

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

    #EndRegion;**** Directives created by AutoIt3Wrapper_GUI ****
    $oWshShell = ObjCreate("WScript.Shell")
    Const $conAllFolders = "HKCU\Software\Microsoft\Windows\ShellNoRoam\Bags\AllFolders"
    Const $ThumbView = "{8BEBB290-52D0-11D0-B7F4-00C04FD706EC}"
    Const $TileView = "{65F125E5-7BE1-4810-BA9D-D271C8432CE3}"
    Const $IconsView = "{0057D0E0-3573-11CF-AE69-08002B2E1262}"
    Const $ListView = "{0E1FA5E0-3573-11CF-AE69-08002B2E1262}"
    Const $DetailsView = "{137E7700-3573-11CF-AE69-08002B2E1262}"
    Const $FilmstripView = "{8EEFA624-D1E9-445B-94B7-74FBCE2EA11A}"
    Global $sPrefix, $sPrefix1, $sPrefix2

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

    If $CMDLINE[0] = 1 Then

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

    If $CMDLINE[1] = "Thumbnails" Then
    $VID_ID = $ThumbView
    ElseIf $CMDLINE[1] = "Tiles" Then
    $VID_ID = $TileView
    ElseIf $CMDLINE[1] = "Icons" Then
    $VID_ID = $IconsView
    ElseIf $CMDLINE[1] = "List" Then
    $VID_ID = $ListView
    ElseIf $CMDLINE[1] = "Details" Then
    $VID_ID = $DetailsView
    ElseIf $CMDLINE[1] = "Filmstrip" Then
    $VID_ID = $FilmstripView
    EndIf

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

    RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\Bags")
    RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\BagMRU")
    SetTinyOpen()
    Sleep(1000)
    Restore_normal_size()
    Else
    Exit 2
    EndIf

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

    Func SetTinyOpen()

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

    $object = ObjCreate("htmlfile")
    With $object.ParentWindow.Screen
    $sPrefix = "WinPos" & .width & "x" & .height & "(1)."
    EndWith
    $object = ObjCreate("htmlfile")
    With $object.ParentWindow.Screen
    $sPrefix1 = "MaxPos" & .width & "x" & .height & "(1)."
    EndWith
    With $object.ParentWindow.Screen
    $sPrefix2 = "MinPos" & .width & "x" & .height & "(1)."
    EndWith

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

    $oWshShell.RegWrite($conAllFolders & "\Shell\Address", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\Buttons", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\Col", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\FFlags", 1, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\FolderType", "MyDocuments", "REG_SZ")
    $oWshShell.RegWrite($conAllFolders & "\Shell\HotKey", 0, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\Links", 0, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix1 & "x", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix1 & "y", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix2 & "x", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix2 & "y", 0xffffffff, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\Mode", 6, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\ShowCmd", 1, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\Sort", 0, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\SortDir", 1, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\Vid", $VID_ID, "REG_SZ")
    $oWshShell.RegWrite($conAllFolders & "\Shell\WFlags", 0, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "bottom", 5, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "left", 0, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "right", 5, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "top", 0, "REG_DWORD")

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

    EndFunc ;==>SetTinyOpen

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

    Func Restore_normal_size()

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

    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "bottom", 570, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "left", 0, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "right", 798, "REG_DWORD")
    $oWshShell.RegWrite($conAllFolders & "\Shell\" & $sPrefix & "top", 2, "REG_DWORD")

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

    EndFunc ;==>Restore_normal_size

    [/autoit]

    Mega

  • Hallo Xenobiologist

    Vielen Dank!
    Ich möchte aber nur die Ansicht von genau einem definierten Ordner (ist bereits geöffnet) ändern. Die anderen Ordneransichten dürfen nicht verändert werden.

    Also genau so, wie wenn das Häkchen "Ansicht für jeden Ordner speichern" gesetzt ist und ich bei einem Ordner aus dem Kontex Menü den Befehl View => Thumbnails wähle!

    Gruß
    Veronesi