繁体   English   中英

如何检测使用GetOpenFileName创建的文件对话框?

[英]How to detect that file dialog has been created using GetOpenFileName?

我参与了命名空间外壳扩展( NSE )的开发,该扩展包含一些文件夹中的文件列表。 我在Windows Vista上使用标志OFN_ALLOWMULTISELECT创建的打开文件对话框(OFD)遇到一些问题。

如果应用程序使用通过IFileOpenDialog创建的OFD, IFileOpenDialog我的NSE可以正常工作。 如果应用程序使用通过GetOpenFileName创建的OFD并且用户选择了一些文件,则他将得到错误的结果,因为此函数返回了字符串:

<Folder name>\0<File name 1>\0<File name2>\0\0

如果应用程序使用通过GetOpenFileName创建的OFD,则必须在NSE中使用单选模式。

问题是:

这是什么方法可以在我的NSE中检测到使用GetOpenFileName创建了OFD吗?

旧的GetOpenFileName对话框从未设计为处理不同父文件夹中的多个文件。

试图通过检测使用的打开对话框的类型来解决此问题是错误的,并且GetOpenFileName可能只是新界面顶部的包装。

当您的IShellFolder :: EnumObjects方法被调用时,查找SHCONTF_FLATLIST标志。 如果未设置该标志,则应恢复为某种简单模式,其中所有项目都具有相同的父项。 我意识到这并不完全是该标志的作用,但它可能是最好的非hacky解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM