我们需要在我们的应用程序中托管类似浏览器的浏览器窗口。由于需要保持与Windows XP的兼容性,因此我们不能使用新的IExplorerBrowser。

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

因此,我们需要设置“大图标” View 模式。我没有找到任何以编程方式获取 View 本身的上下文菜单的方法。

然后,我发现IShellView2似乎需要走的路-IShellView2.CreateViewWindow2()可以将 View 模式接收为GUID,而不是预定义的const。但是无法访问该界面!

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

如何获取IShellView2接口(interface)的对象???

最佳答案

调用IShellView对象上的QueryInterface方法,向其询问IID_IShellView2。

10-05 22:05