0

我创建了一个以 Desktop 为根的命名空间扩展。扩展的主要目的是提供一个虚拟的 ZIP 文件列表,代表一个可配置目录的列表。当用户单击其中一项时,相关目录的内容将被压缩到位,并且生成的 ZIP 文件存储在缓存文件夹中。

除了一个小问题,所有这些都很好。如果我们转到 Windows 资源管理器,打开扩展并双击一个项目,打开的文件是缓存中的那个。[正确的]

另一方面,如果我们通过打开对话框打开它,则打开的文件是来自 Internet 临时文件目录的文件。[不正确]

为了从缓存文件夹而不是从 Internet 临时文件中打开文件,我必须为打开对话框(例如通过 notepad.exe 使用时)更改什么。我试图在 IShellFolder::GetDisplayNameOf 中始终发送合格的文件名,但没有任何运气。

4

2 回答 2

0

听起来您没有传入正确的初始目录(在 OPENFILENAME 结构的 lpstrInitialDir 或 lpstrFile 参数中)。

在 lpstrInitialDir 中输入您的缓存目录并将 lpstrFile 留空,它应该可以工作。

于 2008-09-18T14:31:08.257 回答
0

该问题已通过屏蔽接口方法IShellFolder::GetAttributesOfSFGAO_FILESYSTEM的实现返回的属性得到解决。

于 2009-07-29T07:40:29.423 回答