САБЖ нужно вручную (без апи тобто) выдрать значок приложения. Как это сделать? В принципе рекурсивно пройтись по дереву я сумею А вот названий переменных и констант, на которые нужно ориентироваться - не знаю Подскажите, в процессе пробежки по дереву ресурсов, как определить, что мы нашли иконку файла? Какие значения с какими константами сравнивать?
Тоже когдато интересовался, даже реверсил апи.. Весь функционал в четырёх файлах, это win2k\private\ntos\w32\ntuser\client\ > extract.c > clres.c > rtlres.c > acons.c Ищется ресурсы типа RT_ICON и тп., если нету то напиши могу дать.
задача простая, просто перенести с одного ехе на другой иконку, а все остальное срезать при этом ни ид, ни имени заранее неизвестно и я хз как реализовать
Все ресурсы организованы в дерево. На первом уровне Type, на втором Language, на третьем - Name (вроде бы так). Как уже выше было сказано, иконки хранятся с Type = RT_ICON (типы можно глянуть в файлике WinUser.h из Platform SDK идущего со студией). Применительно к иконке скорее всего язык будет один. Таким образом задача простая. Найти поддерево с типом RT_ICON, пройти его все в поисках ресурса с заданным именем. Как то писал код, который получает список всех ресурсов и выводит их содержимое без всяких API, за исключением ReadFile, CreateFile. Могу показать рабочий код, если не получится.
Насколько понимаю описатели иконок обьеденяются в директорию(ресурс RT_GROUP_ICON). Каждый элемент этой директории описывает иконку в ресурсах(её размер и количество цветов). Первую там отображает проводник. Значит нужно вначале найти эту директорию и извлечь ID иконки. Затем ищем директорию типа RT_ICON, там массив иконок. Берём по найденному ID первую. Собственно в сурцах всё есть, смотри ExtractIconFromEXE(), CreateIconFromResourceEx(). Тока это в файл затолкать проблемно.
наоборот ты не совсем прав. В группе иконок да, берется первая. А вот в ресурсе RT_ICON проводник из этой группы выбирает лучшую, а не первую, и отображает ее
MSoft Не совсем так.. когда раньше я компилировал экзешник с несколькими иконками определёнными в .rc последовательно, то не зависимо от качества иконки отображалась первая. Хотя не уверен. Вероятно берётся первая, которой ID наименьший.