アプリケーションでエクスプローラーのようなブラウザーウィンドウをホストする必要があります。Windows XPとの互換性を維持する必要があるため、新しいIExplorerBrowserを使用できません。
主な問題は、デフォルトで「大きなアイコン」モードでアイテムを表示する必要があることです。残念ながら、FOLDERSETTINGS.viewMode = 0x1 / * LargeIcon * /を指定してIShellVIew.CreateViewWindow()を呼び出しても、表示モードは目的のモードに変更されません。ただし、ウィンドウのコンテキストメニューを使用して手動でこれを行うことができます。
そのため、「大きなアイコン」の表示モードを設定する必要があります。ビュー自体のコンテキストメニューをプログラムで取得する方法が見つかりませんでした。
次に、IShellView2に進む方法が必要であることがわかりました。IShellView2.CreateViewWindow2()は、事前定義されたconstではなくGUIDとしてビューモードを受け取ります。しかし、インターフェースにアクセスできません!
IShellFolder.CreateViewObject(hwndOwner、typeof(IShellView).GUID)は、正しいインスタンスを返します。しかし、IShellFolder.CreateViewObject(hwndOwner、typeof(IShellView2).GUID)を試してみると、「指定されたキャストが無効です」という例外が発生します。
IShellView2インターフェイスのオブジェクトを取得するにはどうすればよいですか?