Как определить, что файл не имеет ассоциированной иконки - PullRequest
2 голосов
/ 27 августа 2009

Я использую API SHGetFileInfo , чтобы получить дескриптор и отобразить значок, связанный с конкретным файлом.

Если у файла нет значка, связанного с ним, Windows вернет вам значок по умолчанию, который он использует в проводнике для неизвестных типов файлов. В этом случае я не хочу отобразить значок.

Как я могу узнать, что у файла нет ассоциированного значка и Windows возвращает мне значок по умолчанию?

В моей системе SHFILEINFO.iIcon всегда равно 3 в этом случае, но я не уверен, насколько это надежно, и я ожидаю, что есть лучший способ проверить это.

Редактировать: я нацеливаюсь на Windows XP и выше

Спасибо

Ответы [ 2 ]

1 голос
/ 27 августа 2009

На какие версии ОС вы ориентируетесь? Если вы можете использовать Vista и более поздние версии, есть API SHGetStockIconInfo , который может оказаться полезным.

SHGetStockIconInfo(SIID_DOCNOASSOC, SHGSI_SYSICONINDEX, &sii) 

вернет индекс значка, который вы ищете в sii.iSysImageIndex.

0 голосов
/ 28 августа 2009

Вы можете попробовать передать вымышленное имя файла с неизвестным расширением в SHGetFileInfo (), отследить, какой индекс значков он сообщает, а затем сравнить этот индекс с вашими реальными файлами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...