[英]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.