【问题标题】:Win32 OpenFileDialog Does Not Filter *.DOCX ShortcutsWin32 OpenFileDialog 不过滤 *.DOCX 快捷方式
【发布时间】:2012-09-12 19:52:38
【问题描述】:

我可以在几台装有 Windows 7 SP1 的不同计算机上执行此操作。

这可以在记事本(或任何其他使用OpenFileDialog 的应用程序)中复制

  1. 创建 DOCX 的快捷方式
  2. 启动记事本
  3. 文件,打开
  4. 过滤 *.txt
  5. 浏览到 *.docx 快捷方式的位置

*.docx 是我能找到的唯一一个不过滤的快捷方式扩展。到目前为止,我唯一的解决方法是让我的应用程序在用户选择文件后检查文件扩展名。

有没有办法让OpenFileDialog 过滤掉用户可能期望的 *.docx.lnk 文件?

为什么只有 Office 文件扩展名受到影响?

【问题讨论】:

  • 其实就是所有Office 2007+文件。所以.pptx 等等。检查随机 4 个字母扩展名被隐藏。
  • 似乎无论过滤器扩展名是什么都会发生 - 它不仅仅是*.txt。
  • 抱歉不是编程问题。更多的是提醒您始终验证输入。我的应用刚刚对这个有所了解。
  • 快捷方式总是有一个 .lnk 扩展名,它只是在资源管理器中被隐藏了
  • 这是一个很好的问题,只是你实际上并没有问。我已经添加了我认为隐含的问题,但如果您不同意,请再次编辑。

标签: c# c++ windows winapi


【解决方案1】:

只有 Office 2007+ 文档的快捷方式会受到影响。 (快捷方式实际上有一个被外壳隐藏的 .lnk 扩展名,即 Windows 资源管理器)

FindFirstFile not 在指定掩码“*.txt”时找到这些文件,所以这是 shell 所做的。

You could attempt to disable respective shell plugins 确定哪个插件负责该行为(为了安全起见:禁用插件,通过任务管理器杀死并重新启动资源管理器,然后在再次测试之前重新启动您的进程)。

我检查了最明显的候选人,但没有找到。


编程建议:验证您的输入。在您的情况下,这是文件内容,而不是文件扩展名!

我可以在“打开”对话框中指定任何字段,即使您限制了遮罩。
我可以将我的文本文件保存为“really.important”,并且仍然希望在您的应用程序中打开它。
我可以将我的 word 文件保存为“真正的 word document.txt”,在您的应用程序中打开它,至少希望您不会崩溃-

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多