虚拟文件是从Internet临时文件中打开的
时间:2020-03-05 18:55:42 来源:igfitidea点击:
我创建了一个命名空间扩展,其根源于桌面。扩展的主要目的是提供一个ZIP文件的虚拟列表,该列表表示可配置目录的列表。当用户单击这些项目之一时,相关目录的内容将压缩到位,并且将生成的ZIP文件存储在缓存文件夹中。
除了一个小问题,所有这些工作都很好。如果我们转到Windows资源管理器,请打开扩展名并双击一个项目,打开的文件就是缓存中的文件。 [正确的]
另一方面,如果我们通过"打开对话框"将其打开,则打开的文件是Internet临时文件目录中的一个。 [不正确]
对于打开对话框(例如,通过槽notepad.exe使用),要从缓存文件夹而不是从Internet临时文件中打开文件,我必须更改什么。我试图一直在IShellFolder :: GetDisplayNameOf中发送合格的文件名,但是没有任何运气。
解决方案
回答
听起来我们没有传递正确的初始目录(在OPENFILENAME结构的lpstrInitialDir或者lpstrFile参数中)。
在lpstrInitialDir中输入缓存目录,并将lpstrFile保留为空白,它应该可以工作。
回答
通过在接口方法IShellFolder :: GetAttributesOf的实现返回的属性中屏蔽SFGAO_FILESYSTEM
,可以解决此问题。