从 IShellFolder 访问 IExplorerCommandProvider

发布于 2024-09-30 00:24:13 字数 840 浏览 4 评论 0原文

我正在为 Vista 和 Windows 7 编写一个资源管理器扩展。我读到,如果您正在制作命名空间扩展,您可以使用 IExplorerCommandProvider 提供自己的命令。这是为了响应 IShellFolder::CreateViewObject 而完成的。

我不是在编写名称空间扩展,而是在编写一个可让您在资源管理器中执行操作的工具栏。因此,我需要从现有的 IShellFolder 获取 IExplorerCommandProvider

我从 IShellBrowser 获取 IShellView,然后将其转换为 IFolderView,然后得到 IShellFolder。到目前为止,一切都很好。我得到一个有效的文件夹指针。

但这不起作用:
pShellFolder->CreateViewObject(NULL,IID_IExplorerCommandProvider,&p); // returns E_NOINTERFACE

我尝试为 CreateViewObjecthwnd 参数传递不同的值,从文件窗格开始一直到顶级资源管理器窗口,但没有他们中的一些人工作了。

所以我的问题是:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文