|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
20.02.2014, 19:56 | #1 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
Запись данных об иконке в ресурсы PE файлов
Приветствую!
Все таки разобрался, как устроены ресурсы, отвечающие за иконку в PE файлах. Параллельно понял устройство и *.ico файлов, ибо это практически одно и то-же. Разница в 2 байтах заголовка сущности. Это RT_GROUP_ICON с именем `MAINICON` и один или несколько ресурсов RT_ICON с целочисленным именем, скажем от 1 до n. Сделал свой класс. Который, идеально читает как *.ico файл, так и PE. Отображает количество сущностей, данные и т.д. Идеально сохраняет в *.ico файл, с любым количеством сущностей. Хоть 1, хоть 10. Контрольная сумма совпадает полностью, с оригинальной *.ico иконкой (которую, я потом поместил в PE-Донора, при компилляции). Вот с сохранением в ресурсы PE, собственно ради чего все это и писалось, проблема. Да будь одна неладна... Иконку из одной сущности, маленького размера, взятая либо с другого PE файла, либо с иконки - записывает. Иконку из 10 сущностей, красивую, Vista Ready... Не записывает. ResourceHacker отказывается показывать RT_GROUP_ICON и RT_ICON с 6 по 10. При этом, если не записывать иконки - ресурс RT_GROUP_ICON записывается отлично, побайтно (все контрольные суммы совпадают) равен аналогичному ресурсу в PE-Доноре иконке. При этом, иконки с 1 по 5 - записываются хорошо, правда не дошли руки проверить контрольные суммы. Собственно код: Второй вариант, первый был запутанный, вызывающий общие процедуры, использующиеся при сохранении в *.ico файл, и работающие 100% в том случае. Код:
Ошибок никаких не возникает, значит все функции возвращают истину! Есть ли какие то ограничения у BeginUpdateResource, UpdateResource, EndUpdateResource? Я ведь понимаю правильно, что можно UpdateResource - вызывать столько раз, сколько нужно? Пробовал каждый раз вызывать эту "святую троицу", так вообще - все ресурсы затерлись к чертовой бабушке! Были только иконки с 6 по 10! (Что кстати странно...) |
21.02.2014, 09:07 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А вторую тему зачем создавать?
Неужели нельзя в свою старую писать?
I'm learning to live...
|
21.02.2014, 09:26 | #3 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
Так тема разная, хотя и из одной области. В той я спрашивал КАК обновить, в этой - ПОЧЕМУ не обновляет нормально.
И ту тему один тролль зафлудил. 3 страницы, и ни одного дельного, проливающего свет на ответ на вопрос сообщения не было. Все нашел в итоге сам, статью на MSDN и тему на одном буржуйском форуме. Полностью понял как все устроено, и начал писать код. Написал, как уже говорил - на чтение работает отлично, на запись - наполовину, причем на ту - которая особо не нужна. Последний раз редактировалось STRELOK-2007; 21.02.2014 в 09:33. |
21.02.2014, 11:56 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ясно. Ладно. Только из-за несдержанности доктора оставлю єту тему.
От себя добавлю, что у меня никогда не получалось подружиться с этими функциями тоже, в основном нарывался на ошибку, где писалось что ОС их не поддерживает.
I'm learning to live...
|
21.02.2014, 12:01 | #5 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
Так вроде как с Windows 2000 они присутствовать должны. Во всяком случае в MSDN так написано.
|
21.02.2014, 13:34 | #7 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
|
21.02.2014, 13:47 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Не собираешься ничего писать - держи слово, проходи мимо. На тебя слишком много жалоб последнее время. Лучше молчи в тряпочку, если без провокаций не можешь. Начиная с этой темы я буду тебе выписывать горчичники за непочтительное обращение к форумчанам - учти это.
I'm learning to live...
|
|
21.02.2014, 14:23 | #9 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Да потому что ты сам меня первый тут зацепил!
Вот себе первому и выпиши, потому что в данном случае виноват ты! Какого ты меня в теме упомянул, когда я ни слова тут не написал? Переход на личности. Нарушение правила форума. От ТЕБЯ! |
21.02.2014, 14:27 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
написана же причина по которой упомянули, нет же недотрогу строим. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
получение данных из файла и запись этих данных в другой. | Jurii77 | Microsoft Office Excel | 9 | 23.11.2011 09:42 |
Запись в ресурсы собственного exe? | Человек_Борща | Общие вопросы Delphi | 3 | 02.08.2010 15:19 |
Как задать команду загрузки файлов данных на кнопку если каталог и имена файлов известны??? | Andbuba | Microsoft Office Excel | 2 | 28.12.2008 17:28 |
Отчет времени на своей иконке в SYSTray | Yuran | Общие вопросы Delphi | 1 | 04.06.2008 23:43 |
Ресурсы, зачем нужны ресурсы | Hallo | Обсуждение статей | 0 | 12.12.2006 21:30 |