Получить информацию о значке из исполняемого файла?

Я пытаюсь получить значок из файла.exe, используя следующие API:
SHGetFileInfoW() SHGetImageList() и из полученного таким образом ImageList я прочитал значок, вызвав GetIcon().

Когда глубина цвета машины установлена ​​на 32 бита, я получаю значок 32-битного цвета. Проблема заключается в том, что когда я меняю глубину цвета аппарата на 24 или 16 бит, я получаю значок цвета 16 бит, и это изображение кажется поврежденным.

Я также проверил список доступных значков в некоторых общих приложениях Windows (блокнот, рисование и т. Д.) И некоторых офисных приложениях, ни у одного из которых не было 16-битных или 24-битных цветных значков.

Каков наилучший способ получить правильные значки из исполняемого файла?

Спасибо!

1 ответ

Вы можете загрузить exe-файлы с помощью LoadLibraryEx, а затем извлечь значки с помощью LoadImage - или - если вы хотите получить прямой доступ к данным значков: FindResource, LoadResource, LockResource предоставят вам указатель на биты ресурсов значка.

Другие вопросы по тегам