从Internet临时文件打开虚拟文件

时间:2008-09-16 11:45:43

标签: c++ windows shell32

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

除了一个小问题,这一切都很有效。如果我们转到Windows资源管理器,请打开扩展名并双击打开的文件是缓存中的文件。 [CORRECT]

另一方面,如果我们通过Open Dialog打开它,则打开的文件是Temporary Internet files目录中的文件。 [不正确]

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

通过在接口方法IShellFolder::GetAttributesOf的实现返回的属性中屏蔽SFGAO_FILESYSTEM来修复问题。