Здравствуйте, psu, Вы писали:
psu>Привет всем.
psu>Есть задача. Необходимо из одного EXE извлечь иконки и впихнуть их в другой.
А UpdateResource не поможет?
psu>Изучил формат PE файлов, получается извлекать иконки без сохранения структуры дерева ресурсов ( сканирую id=3 ).
psu>Вопросы:
psu>1. Как извлечь, одновременно сохранив эту самую структуру?
Если полностью сохранить структуру — ИМХО только полным копированием таблицы ресурсов, с правкой ссылок на неё в хидере нового файла.
Обычно в этом нет необходимости. Чтобы WinAPI могло корректно обработать содержимое каталога ресурсов, нужно поместить сами иконки и добавить соответствующие записи в директории ресурсов (Type, NameID. Language можно и пропустить).
Здесь есть одна маленькая заморочка — данные часто находятся сразу за директорией, и если ресурсы уже какие-то есть, нужно будет двигать и править ссылки
psu>2. Пробую искать не иконку ( id=3 ), а группу иконок ( id=14 ). Не пашет. Подскажите, плз.
В директории Type не находит такой ID?
Формат данных GROUP_ICON примерно такой:
WORD 0, 1 // это не помню :-(
WORD Count // количество иконок в группе
// далее идут такие структуры (в количестве Count) на каждую иконку:
char data[12] // это вроде как инфа о размерах иконки
WORD IconID // ID принадлежащих группе иконок
когда это найдено, остаётся только обработать иконки с ID из группы.
здесь есть PEview — полезная маленькая тулза, когда-то сильно помогла.
psu>ЗЫ. Ответы типа "ну почитай <ссылка на ГДЕ-НИБУДЬ>" прошу не давать
Даваёте такие мне, а то уже не помню откуда инфа выше, и насколько она верна
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth