虚拟文件从 Internet 临时文件打开
我创建了一个植根于桌面下的命名空间扩展。 该扩展的主要目的是提供代表可配置目录列表的 ZIP 文件的虚拟列表。 当用户单击这些项目之一时,相关目录的内容将被压缩到位,并将生成的 ZIP 文件存储在缓存文件夹中。
除了一个小问题之外,所有这些都运作良好。 如果我们转到 Windows 资源管理器,打开扩展程序并双击某个项目,打开的文件就是缓存中的文件。 [正确]
另一方面,如果我们通过打开对话框打开它,则打开的文件来自临时 Internet 文件目录。 [错误]
我必须对打开对话框(例如通过 notepad.exe 使用时)进行哪些更改才能从缓存文件夹而不是从临时 Internet 文件打开文件。 我尝试在 IShellFolder::GetDisplayNameOf 中始终发送合格的文件名,但没有任何运气。
I have created a namespace extension that is rooted under Desktop. The main purpose of the extension is to provide a virtual list of ZIP files that represent a list of configurable directories. When the user clicks one of the those items the contents of the related directory are zipped in place and the resulting ZIP file is stored in a cache folder.
All this works well aside a minor issue. If we go to Windows Explorer, open the extension and double click an item the opened file is the one from the cache. [CORRECT]
If on the other hand we open it by an Open Dialog the opened file is one from a Temporary Internet files directory. [INCORRECT]
What do I have to change for the Open Dialog (when used for example trough notepad.exe) to open the file from the cache folder and not from Temporary Internet files. I have tried to send allways the qualified file name in IShellFolder::GetDisplayNameOf but without any luck.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通过屏蔽接口方法 IShellFolder::GetAttributesOf。
The problem was fixed by masking
SFGAO_FILESYSTEM
in the attributes returned by implementation of interface method IShellFolder::GetAttributesOf.听起来您没有传递正确的初始目录(在 OPENFILENAME 结构的 lpstrInitialDir 或 lpstrFile 参数中)。
在 lpstrInitialDir 中输入您的缓存目录并将 lpstrFile 留空,它应该可以工作。
It sounds like you are not passing in the correct initial directory (in the lpstrInitialDir or lpstrFile parameter of your OPENFILENAME struct).
Enter your cache directory in lpstrInitialDir and leave lpstrFile blank and it should work.