2015-06-09 27 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。事實證明,無論如何,應用程序路徑並不是非常重要。

相關問題