¿Es posible cambiar la vista del explorador specific folder
C:\
a?iconos grandesusando VBA? He utilizado este programa RegistryChangesView
para capturar cambios en el registro de Windows y obtuve estos datos:
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
Lo presenté más tarde pero no tiene ningún efecto (lista fija de vista de carpetas).
Creo que se puede hacer mediante la API de Windows (no estoy familiarizado con ella).
De antemano cualquier ayuda es bienvenida.
Respuesta1
La BagMRU
clave indexa las vistas guardadas, asociando una ruta completa con una bolsa de propiedades numerada, con la configuración de la vista guardada en una subclave de la Bags
clave adyacente.
Pero la numeración/nombramiento de las claves no es fija, sino que depende de cuándo se ve una carpeta por primera vez. Si un usuario no ha visto la carpeta enExplorador, no habrá bolsa. En resumen, ésta no es la manera de intentarlo.
Para manipular la vista guardada de una carpeta, la carpeta debe estar abierta enExploradorpara acceder y modificar la vista utilizando los diversos objetos com disponibles a través deshell.application
. EnPotencia Shell, cree una instancia usando:
$Shell = New-Object -ComObject shell.application
Utilizar elWindows
método para recuperar abiertoExploradorventanas. UnExploradorLa ventana tiene las siguientes propiedades:
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
La Document
propiedad es en sí misma un objeto com. Es a través de este objeto que podemos get
ciertos set
aspectos de la vista de carpetas.
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
CurrentVIewMode
y IconSize
son los valores a modificar. Utilice valores de la Mode
columna de esta tabla:
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
Aquí hay un código de muestra:
$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()