3

我正在实现一个在 Windows 7 上OFNHookProc检测一个通用控件GetOpenFileName()对话框。我的检测是用 C++ 编写的。在用户选择库(如文档或图片)之前,一切正常。发生这种情况时,我会收到CDN_FOLDERCHANGE预期的通知,但是当我向对话框发送CDM_GETFOLDERPATH消息以检索新选择的文件夹时,我收到错误返回 -1,CommDlgExtendedError返回 0。在某些方面,这是有道理的,因为它是不是文件夹,但其他消息似乎都不起作用(如CDM_GETFOLDERIDLISTCDM_GETFILEPATH)。

那么,您如何判断OFNHookProc当前选定的项目或文件夹是一个库?一旦您知道它是一个库,您如何获得它的接口IShellItemIShellLibrary接口,以便您可以确定哪些文件系统文件夹构成了该库?

(创建GetOpenFileName对话框的代码是遗留代码,所以我不能用 Windows-7 推荐的IFileOpenDialog界面替换它,该界面以理智的方式支持库)。

4

0 回答 0