2015-06-09 24 views
0

如何找到特定文件扩展名的默认应用程序?查找特定文件扩展名的默认应用程序(即使在由metro应用程序提供时)

这似乎取决于windows的版本,但是我发现的最好的选择似乎是在shlwapi中使用AssocQueryString,这似乎适用于某些类型的应用程序。

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

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

+0

不幸的是我认为metro文件关联系统并没有暴露给桌面应用程序。 –

+0

@JonathanPotter:例如,如果你可以提供一种解决方法,例如,我可以确定给定的文件扩展名明确地没有关联的查看器,那么我愿意接受这些行的答案,特别是如果你也给引用MSDN或类似网站。 – Arafangion

+1

使用ShellExecuteEx启动它并响应该函数的错误报告。 –

回答

0

答案是使用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. 

积分给乔纳森和大卫,他建议寻找应用程序路径的原始方法不再适用于metro-apps。事实证明,无论如何,应用程序路径并不是非常重要。

相关问题