Die Explorer-Ansicht eines bestimmten Ordners mit VBA in große Symbole ändern?

Die Explorer-Ansicht eines bestimmten Ordners mit VBA in große Symbole ändern?

ist es möglich, die Explorer-Ansicht zu ändern specific folder C:\aufgroße Iconsmit VBA? Ich habe dieses Programm verwendet, RegistryChangesViewum Änderungen an der Windows-Registrierung zu erfassen, und habe diese Daten erhalten:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU\0\0]
"MRUListEx"=hex(3):00,00,00,00,01,00,00,00,02,00,00,00,FF,FF,FF,FF 

Ich habe es später angewendet, aber es hat überhaupt keine Wirkung (Ordneransicht ist immer noch Liste).
Ich denke, es kann über die Windows-API erfolgen (ich kenne mich damit nicht aus).
Im Voraus ist jede Hilfe willkommen.

Bildbeschreibung hier eingeben

Antwort1

Der BagMRUSchlüssel indiziert gespeicherte Ansichten und verknüpft einen vollqualifizierten Pfad mit einem nummerierten Eigenschaftenbehälter, wobei die Ansichtseinstellungen in einem Unterschlüssel des benachbarten BagsSchlüssels gespeichert werden.

BagMRU-Schlüssel

Bildbeschreibung hier eingeben

Die Nummerierung/Benennung der Schlüssel ist jedoch nicht festgelegt, sondern hängt davon ab, wann ein Ordner zum ersten Mal angezeigt wird. Wenn ein Benutzer den Ordner nicht inForscher, es wird keine Tasche geben. Kurz gesagt, das ist nicht der richtige Weg, dies zu versuchen.



Um die gespeicherte Ansicht eines Ordners zu bearbeiten, muss der Ordner geöffnet sein inForscherum auf die Ansicht zuzugreifen und sie zu ändern, indem man die verschiedenen COM-Objekte verwendet, die übershell.application. InPower Shell, erstellen Sie eine Instanz mit:

$Shell = New-Object -ComObject shell.application

Verwenden Sie dieWindowsMethode zum Abrufen von offenenForscherFenster. EinForscherFenster hat die folgenden Eigenschaften:

Application          : System.__ComObject
Parent               : System.__ComObject
Container            : 
Document             : System.__ComObject
TopLevelContainer    : True
Type                 : 
Left                 : 0
Top                  : 0
Width                : 1462
Height               : 625
LocationName         : Windows (C:)
LocationURL          : file:///C:/
Busy                 : False
Name                 : File Explorer
HWND                 : 78776658
FullName             : C:\WINDOWS\explorer.exe
Path                 : C:\WINDOWS\
Visible              : True
StatusBar            : False
StatusText           : 
ToolBar              : 1
MenuBar              : False
FullScreen           : False
ReadyState           : 4
Offline              : False
Silent               : False
RegisterAsBrowser    : False
RegisterAsDropTarget : True
TheaterMode          : False
AddressBar           : True
Resizable            : True

Die DocumentEigenschaft selbst ist ein COM-Objekt. Über dieses Objekt können wir bestimmte Aspekte der Ordneransicht festlegen get.set

Application     : System.__ComObject
Parent          : 
Folder          : System.__ComObject
FocusedItem     : System.__ComObject
Script          : 
ViewOptions     : 139
CurrentViewMode : 8
GroupBy         : System.Null
FolderFlags     : 1090519041
SortColumns     : prop:System.ItemNameDisplay;
IconSize        : 32

CurrentVIewModeund IconSizesind die zu ändernden Werte. Verwenden Sie Werte aus der ModeSpalte dieser Tabelle:

Name        LVM Mode Vid                                    IconSize
----        --- ---- ---                                    --------
Details     1   4    {137E7700-3573-11CF-AE69-08002B2E1262} 16
Tiles       2   6    {65F125E5-7BE1-4810-BA9D-D271C8432CE3} 48
SmIcons     3   1    {089000C0-3573-11CF-AE69-08002B2E1262} 16..31
Icons(M-XL) 3   1    {0057D0E0-3573-11CF-AE69-08002B2E1262} 33..256
List        4   3    {0E1FA5E0-3573-11CF-AE69-08002B2E1262} 16
Content     5   8    {30C2C434-0889-4C8D-985D-A9F71830B0A9} 32

Hier ist ein Beispielcode:

$Shell    = New-Object -ComObject shell.application

Function WaitFor-NewWindow ( $CurrentCount )
{
    Do { Sleep -m 50 } Until ( $Shell.Windows().Count -gt $CurrentCount )
}

Function Get-TargetWindow ( $Path )
{
    $OpenWindows = @( $Shell.Windows() )
    If ( $TargetWindow = $OpenWindows | ? { $_.Document.Folder.Self.Path -like $Path } )
    {
        $TargetWindow
    }
    Else
    {
        $Shell.Open( $Target )
        WaitFor-NewWindow $OpenWindows.Count
        @( $Shell.Windows() ) | ? HWND -notIn $OpenWindows.HWND
    }
}

$Target       = 'C:\'
$TargetWindow =  Get-TargetWindow $Target

$TargetWindow.Document.CurrentViewMode = 1
$TargetWindow.Document.IconSize        = 96
$TargetWindow.Quit()

verwandte Informationen