打开文件对话框按文件内容过滤

ardnew

我通常使用TOpenDialogFilter属性来缩小用户的可用文件范围。我想进一步按内容过滤这些文件。

例如,打开文件对话框应仅显示文件扩展名为“ .bin”的文件其前4个魔术字节为0x7F,0x45、0x4C,0x46(ELF可执行文件)。

条件不一定总是标识某些可执行格式,而是其他二进制数据。

在Delphi / VCL中是否有执行此操作的标准方法,还是必须将内容检查推迟到用户选择文件之后?

大卫·赫弗南(David Heffernan)

无法实现您想要的。系统文件对话框不允许您根据其内容过滤显示的文件。

OnIncludeItem事件诱人地似乎可以满足您的需求。但是,它具有以下问题。

  1. 该事件包装了CDN_INCLUDEITEM通知。该通知是由旧版XP通用对话框触发的,而不是由现代通用项对话框触发的。因此,使用该事件会强制将旧版XP通用对话框添加到您的程序中。如果没有其他原因,这会带来美容方面的不利影响。
  2. 更重要的是,处理CDN_INCLUDEITEM对文件没有影响。它仅影响非文件系统外壳程序对象。形成文件

对话框始终包含同时具有SFGAO_FILESYSTEM和SFGAO_FILESYSANCESTOR属性的项目,而不管CDN_INCLUDEITEM返回的值如何。

相关问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章