如何获取指向IShellView2接口的指针

我们需要在我们的应用程序中托pipe浏览器般的浏览器窗口。 我们不能使用新的IExplorerBrowser,因为需要保持与Windows XP的兼容性。

主要的问题是我们需要在“大图标”模式下默认显示项目。 不幸的是,调用IShellVIew.CreateViewWindow()与FOLDERSETTINGS.viewMode = 0x1 / * LargeIcon * /不会将视图模式更改为所需的。 但我可以通过窗口中的上下文菜单手动执行此操作。

所以我们需要设置“大图标”查看模式。 我没有find任何方式来编程方式获取视图本身的上下文菜单。

然后,我发现IShellView2似乎需要去 – IShellView2.CreateViewWindow2()接收视图模式为GUID而不是预定义的常量。 但是无法访问界面!

IShellFolder.CreateViewObject(hwndOwner,typeof(IShellView).GUID)返回正确的实例。 但是当我尝试IShellFolder.CreateViewObject(hwndOwner,typeof(IShellView2).GUID)我有exception“指定的转换无效”。

我怎样才能获得IShellView2接口的对象?

调用IShellView对象上的QueryInterface方法来询问IID_IShellView2。