【问题标题】:Finding the default application for a particular file name extension (Even when served by a metro app)查找特定文件扩展名的默认应用程序(即使由 Metro 应用程序提供)
【发布时间】:2015-08-23 19:01:06
【问题描述】:

如何找到特定文件扩展名的默认应用程序?

这似乎因 windows 的版本而异,但我发现的最佳选择似乎是在 shlwapi 中使用 AssocQueryString,这对于某些类型的应用程序似乎效果很好。

但是,它在 Windows 8 中失败,可能是因为默认的 pdf 查看器有一个 Metro“应用程序”。

我想知道的原因是,如果有默认应用程序,我可以为给定文件启动默认应用程序。 - 否则,我很乐意给出一条消息:“文件已生成,但您没有安装查看器来显示它。”

【问题讨论】:

  • 很遗憾,我认为 Metro 文件关联系统尚未暴露于桌面应用程序。
  • @JonathanPotter:例如,如果您可以提供一种解决方法,以便我可以确定给定的文件扩展名绝对没有关联的查看器,那么我愿意接受这些答案行,尤其是如果您还引用了 MSDN 或类似网站。
  • 用 ShellExecuteEx 启动它并响应该函数的错误报告。

标签: winapi windows-8 windows-7 microsoft-metro windows-8.1


【解决方案1】:

答案是使用 os.startfile(在 python 中),它似乎等同于 ShellExecute(和 ShellExecuteEx),尽管具有简化的界面。

try:
    os.startfile(r'abspath/to/file', 'open)
except WindowsError:
    os.startfile(r'abspath/to', 'open') # Fallback to opening directory.

感谢 Jonathan 和 David,他们建议寻找应用程序路径的原始方法不再适用于 Metro-apps。事实证明,应用程序路径无论如何都不是超级重要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多