我创建了一个以 Desktop 为根的命名空间扩展。扩展的主要目的是提供一个虚拟的 ZIP 文件列表,代表一个可配置目录的列表。当用户单击其中一项时,相关目录的内容将被压缩到位,并且生成的 ZIP 文件存储在缓存文件夹中。
除了一个小问题,所有这些都很好。如果我们转到 Windows 资源管理器,打开扩展并双击一个项目,打开的文件是缓存中的那个。[正确的]
另一方面,如果我们通过打开对话框打开它,则打开的文件是来自 Internet 临时文件目录的文件。[不正确]
为了从缓存文件夹而不是从 Internet 临时文件中打开文件,我必须为打开对话框(例如通过 notepad.exe 使用时)更改什么。我试图在 IShellFolder::GetDisplayNameOf 中始终发送合格的文件名,但没有任何运气。