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

时间:2014-03-11 14:36:09

标签: delphi vcl

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

例如,打开文件对话框应仅显示带有" .bin"的文件。文件扩展名其前4 magic bytes为0x7F,0x45,0x4C,0x46(ELF可执行文件)。

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

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

1 个答案:

答案 0 :(得分:5)

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

OnIncludeItem事件非常诱人地表现出您的需求。但是,它有以下问题。

  1. 该事件包含CDN_INCLUDEITEM通知。此通知由旧版XP公共对话框触发,但不是由现代公共项对话框触发。因此,使用该事件会将旧版XP常用对话框强制插入到您的程序中。如果没有其他原因,这有整容的缺点。
  2. 更重要的是,处理CDN_INCLUDEITEM对文件没有影响。它只影响非文件系统shell对象。形成documentation
  3.   

    对话框始终包含具有SFGAO_FILESYSTEM和SFGAO_FILESYSANCESTOR属性的项目,无论CDN_INCLUDEITEM返回的值如何。

    相关问题: