2009-08-27 99 views
2

我正在使用SHGetFileInfo api來獲取句柄並顯示與特定文件關聯的圖標。如何判斷文件是否沒有關聯圖標

如果該文件沒有與之關聯的圖標,Windows會返回默認的瀏覽器,用於未知文件類型。在這種情況下我不要想要顯示的圖標。

如何判斷文件是否沒有關聯圖標,Windows是否讓我恢復默認的圖標?

在我的系統SHFILEINFO.iIcon總是等於3在這種情況下,但我不知道這是多麼可靠,我期望有一個更好的方法來檢查這一點。

編輯:我針對Windows XP和向上

感謝

回答

1

哪些操作系統版本,你定位?如果您可以假設Vista和更高版本,那麼您可能會發現有用的API SHGetStockIconInfo

SHGetStockIconInfo(SIID_DOCNOASSOC, SHGSI_SYSICONINDEX, &sii) 

將返回您在sii.iSysImageIndex中查找的圖標索引。

+0

XP及更高版本。我會更新我的帖子。感謝您的信息 – Jamie

0

你可以嘗試傳遞一個帶有未知擴展名的虛構文件名到SHGetFileInfo(),跟蹤它報告的圖標索引,然後將該索引與你的真實文件進行比較。

+0

您永遠不會知道用戶何時會安裝其他註冊虛擬擴展的應用程序。 –

+0

您只需事先向註冊表中的註冊文件擴展名查詢,然後選擇一個尚不存在的文件。或者隨機動態生成文件擴展名,檢查它是否存在,並在需要時重新生成(與其uUnique參數設置爲0時的GetTempFileName()方法類似)。 –

相關問題