Здравствуйте, CEMb, Вы писали:
CEM>Здравствуйте, Carc, Вы писали:
C>>Хороший вопрос!
А действительно если спроецировать содержимое *.icl на Memory Mapped File, а потом подсунуть все это дело достославной функции ExtractIcon(Ex)!?! Ведь таскает же она иконки из загруженных .exe и .dll? Почему бы и в этом случае ей не отработать корректно?
C>>Сам не пробовал, но по идее должно сработать.
CEM>Про чтение иконок из файлов, т.е. самих данных, есть в msdn'e оба случая, из ico и dll/exe. Про формат icl не знаю, поэтому ничего не скажу.
С ICL-форматом распрекрасно справляется ExtractIcon(Ex).
Здравствуйте, Multix, Вы писали:
M>Здравствуйте, Multix, Вы писали:
M>>Всем добрый день. Программирую на чистом C++ ( не .Net). Возникла проблема — требуется загрузить иконку из некоторого файла. Этот файл не dll не exe и не ico. Файл с иконкой я могу загрузить в поток. Как получить hIcon для такого файла
M>Если кто умельцы найдутся, подскажите плиз как добраться до файла , хранящегося в icl
( dll, exe ), если я знаю структуру IMAGE_NT_HEADERS, IMAGE_DOS_HEADER. Нет толкового описания того, как по заголовку структуры IMAGE_NT_HEADERS добраться до файлов из секций IMAGE_SECTION_HEADER( его я тоже прочитал ).
M>Дальше стопор. Задача в итоге сводится как разобрать исполняемый файл формата PE на содержимое. Вот=)
Если есть возможность, то можно бинарнику сделать LoadLibraryEx(имя_файла, NULL, LOAD_LIBRARY_AS_DATAFILE);
И потом распарсить ресурсы соответствующими функциями WinAPI. Вообще-то второй параметр функции LoadLibraryEx это HANDLE (hFile), в старом MSDN говорится что он зарезервирован для использования в будущем. Но то что это хендл файла наводит на интересные размышления. Можно покопать в этом направлении. Ну или опять же на этом форуме можно найти код, который будет грузить бинарник из памяти. Но это же конечно недокументировано, и вообще неизвестно как себя когда поведет. Но в принципе это выход. Ну а если допустимо сбросить бинарник на диск, то в принципе это вполне рабочий будет подход, хотя и не красивый.