从 IShellFolder 访问 IExplorerCommandProvider
我正在为 Vista 和 Windows 7 编写一个资源管理器扩展。我读到,如果您正在制作命名空间扩展,您可以使用 IExplorerCommandProvider 提供自己的命令。这是为了响应 IShellFolder::CreateViewObject 而完成的。
我不是在编写名称空间扩展,而是在编写一个可让您在资源管理器中执行操作的工具栏。因此,我需要从现有的 IShellFolder 获取 IExplorerCommandProvider。
我从 IShellBrowser 获取 IShellView,然后将其转换为 IFolderView,然后得到 IShellFolder。到目前为止,一切都很好。我得到一个有效的文件夹指针。
但这不起作用:
pShellFolder->CreateViewObject(NULL,IID_IExplorerCommandProvider,&p); // returns E_NOINTERFACE
我尝试为 CreateViewObject 的 hwnd 参数传递不同的值,从文件窗格开始一直到顶级资源管理器窗口,但没有他们中的一些人工作了。
所以我的问题是:
1) 常规文件系统文件夹是否支持 IExplorerCommandProvider?
2)如果有的话,我如何获得该界面?
谢谢
伊沃
I am writing an Explorer extension for Vista and Windows 7. I read that if you are making a namespace extension you can provide your own commands using IExplorerCommandProvider. This is done in response to IShellFolder::CreateViewObject.
I am not writing a namespace extension, but a toolbar that lets you perform operations in Explorer. So I need to get IExplorerCommandProvider from an existing IShellFolder.
I get IShellView from the IShellBrowser, then I convert it to IFolderView, then I get IShellFolder. So far so good. I get a valid folder pointer.
This however doesn't work:
pShellFolder->CreateViewObject(NULL,IID_IExplorerCommandProvider,&p); // returns E_NOINTERFACE
I tried passing different values for the hwnd parameter of CreateViewObject, starting with the file pane and going all the way up to the top level Explorer window, and none of them worked.
So my questions are:
1) Do regular file system folders even support IExplorerCommandProvider?
2) If they do, how do I get my hands on that interface?
Thanks
Ivo
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论