是否可以將資源管理器視圖變更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
。在電源外殼,使用以下命令建立實例:
$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
資料夾視圖的各個方面。
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()