можно ли изменить вид проводника specific folder
C:\
набольшие иконкис помощью VBA? Я использовал эту программу RegistryChangesView
для фиксации изменений в реестре Windows и получил следующие данные:
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
Я подал заявку позже, но это не дало никакого эффекта (просмотр папок по-прежнему список).
Я думаю, это можно сделать с помощью Windows API (я с ним не знаком).
Заранее, любая помощь приветствуется.
решение1
Ключ BagMRU
индексирует сохраненные представления, связывая полностью определенный путь с пронумерованным набором свойств, а также настройки представления, сохраненные в подразделе смежного Bags
ключа.
Но нумерация/наименование ключей не фиксировано, а скорее зависит от того, когда папка просматривается впервые. Если пользователь не просматривал папку вИсследователь, не будет сумки. Короче говоря, это не тот способ, которым стоит пытаться это сделать.
Чтобы управлять сохраненным видом папки, папка должна быть открыта вИсследовательдля доступа к представлению и его изменения с использованием различных com-объектов, доступных черезshell.application
. ВPowerShell, создайте экземпляр, используя:
$Shell = New-Object -ComObject shell.application
ИспользоватьWindows
метод извлечения открытогоИсследовательокна.ЭКСПЛОРЕРОкно имеет следующие свойства:
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
Свойство Document
само по себе является объектом com. Именно через этот объект мы можем get
/ set
cetain аспекты представления папки.
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
и IconSize
— это значения для изменения. Используйте значения из Mode
столбца этой таблицы:
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
Вот пример кода:
$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()