2

アプリケーションでエクスプローラーのようなブラウザーウィンドウをホストする必要があります。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インターフェイスのオブジェクトを取得するにはどうすればよいですか?

4

1 に答える 1

4

IShellViewオブジェクトのQueryInterfaceメソッドを呼び出して、IID_IShellView2を要求します。

于 2012-09-20T19:50:51.330 に答える