我通常使用TOpenDialog
及其Filter
属性来缩小用户的可用文件范围。我想进一步按内容过滤这些文件。
例如,打开文件对话框应仅显示带有" .bin"的文件。文件扩展名和其前4 magic bytes为0x7F,0x45,0x4C,0x46(ELF可执行文件)。
条件不一定总是识别某些可执行格式,而是识别其他二进制数据。
在Delphi / VCL中是否有标准方法可以执行此操作,或者在用户选择文件之后是否必须推迟内容检查?
答案 0 :(得分:5)
没有办法实现你想要的。系统文件对话框不允许您根据内容过滤显示的文件。
OnIncludeItem
事件非常诱人地表现出您的需求。但是,它有以下问题。
CDN_INCLUDEITEM
通知。此通知由旧版XP公共对话框触发,但不是由现代公共项对话框触发。因此,使用该事件会将旧版XP常用对话框强制插入到您的程序中。如果没有其他原因,这有整容的缺点。CDN_INCLUDEITEM
对文件没有影响。它只影响非文件系统shell对象。形成documentation:对话框始终包含具有SFGAO_FILESYSTEM和SFGAO_FILESYSANCESTOR属性的项目,无论CDN_INCLUDEITEM返回的值如何。
相关问题: