VBA を使用して特定のフォルダーのエクスプローラー ビューを大きなアイコンに変更しますか?

VBA を使用して特定のフォルダーのエクスプローラー ビューを大きなアイコンに変更しますか?

エクスプローラービューを変更することは可能ですかspecific folder C:\大きなアイコンVBA を使用していますか? このプログラムを使用してRegistryChangesViewWindows レジストリの変更をキャプチャし、次のデータを取得しました:

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

BagMRUキー

ここに画像の説明を入力してください

しかし、キーの番号付け/名前付けは固定ではなく、フォルダが最初に表示されたときに依存します。ユーザーがフォルダを冒険者、バッグはないでしょう。要するに、これはこれを試みる方法ではありません。



フォルダの保存されたビューを操作するには、フォルダを冒険者さまざまな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()

関連情報