我创建了一个以Desktop为根的命名空间扩展。扩展的主要目的是提供表示可配置目录列表的ZIP文件的虚拟列表。当用户单击其中一个项目时,相关目录的内容将被压缩到位,并且生成的ZIP文件将存储在缓存文件夹中。
除了一个小问题,这一切都很有效。如果我们转到Windows资源管理器,请打开扩展名并双击打开的文件是缓存中的文件。 [CORRECT]
另一方面,如果我们通过Open Dialog打开它,则打开的文件是Temporary Internet files目录中的文件。 [不正确]
我必须更改“打开对话框”(例如,当用于notepad.exe时)从缓存文件夹而不是从Internet临时文件打开文件。我试图在IShellFolder :: GetDisplayNameOf中发送合格的文件名,但没有任何运气。
答案 0 :(得分:0)
听起来你没有传入正确的初始目录(在OPENFILENAME结构的lpstrInitialDir或lpstrFile参数中)。
在lpstrInitialDir中输入你的缓存目录,并将lpstrFile留空,它应该可以工作。
答案 1 :(得分:0)
通过在接口方法IShellFolder::GetAttributesOf的实现返回的属性中屏蔽SFGAO_FILESYSTEM
来修复问题。