我正在使用SHGetFileInfo api來獲取句柄並顯示與特定文件關聯的圖標。如何判斷文件是否沒有關聯圖標
如果該文件沒有與之關聯的圖標,Windows會返回默認的瀏覽器,用於未知文件類型。在這種情況下我不要想要顯示的圖標。
如何判斷文件是否沒有關聯圖標,Windows是否讓我恢復默認的圖標?
在我的系統SHFILEINFO.iIcon
總是等於3在這種情況下,但我不知道這是多麼可靠,我期望有一個更好的方法來檢查這一點。
編輯:我針對Windows XP和向上
感謝
我正在使用SHGetFileInfo api來獲取句柄並顯示與特定文件關聯的圖標。如何判斷文件是否沒有關聯圖標
如果該文件沒有與之關聯的圖標,Windows會返回默認的瀏覽器,用於未知文件類型。在這種情況下我不要想要顯示的圖標。
如何判斷文件是否沒有關聯圖標,Windows是否讓我恢復默認的圖標?
在我的系統SHFILEINFO.iIcon
總是等於3在這種情況下,但我不知道這是多麼可靠,我期望有一個更好的方法來檢查這一點。
編輯:我針對Windows XP和向上
感謝
哪些操作系統版本,你定位?如果您可以假設Vista和更高版本,那麼您可能會發現有用的API SHGetStockIconInfo。
SHGetStockIconInfo(SIID_DOCNOASSOC, SHGSI_SYSICONINDEX, &sii)
將返回您在sii.iSysImageIndex中查找的圖標索引。
你可以嘗試傳遞一個帶有未知擴展名的虛構文件名到SHGetFileInfo(),跟蹤它報告的圖標索引,然後將該索引與你的真實文件進行比較。
您永遠不會知道用戶何時會安裝其他註冊虛擬擴展的應用程序。 –
您只需事先向註冊表中的註冊文件擴展名查詢,然後選擇一個尚不存在的文件。或者隨機動態生成文件擴展名,檢查它是否存在,並在需要時重新生成(與其uUnique參數設置爲0時的GetTempFileName()方法類似)。 –
XP及更高版本。我會更新我的帖子。感謝您的信息 – Jamie