Сейчас на форуме: Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых) |
eXeL@B —› Программирование —› Изменение иконок в ресурсах |
Посл.ответ | Сообщение |
|
Создано: 31 мая 2008 19:33 · Личное сообщение · #1 Возникла такая проблема - нужно программным способом заменить иконку в exe. Подскажите, как это правильно реализовать. Я пытаюсь использовать UpdateResource; что-то в ресурсы добавляется, но в проводнике иконка не отображается и редакторы ресурсов её тоже не видят. Долго искал, но решения так и не нашел. В аттаче нерабочий исходник на фасме. bb05_31.05.2008_CRACKLAB.rU.tgz - setic.ASM |
|
Создано: 31 мая 2008 20:22 · Поправил: Jupiter · Личное сообщение · #2 в твоем сорсе ты зачем то вызываешь BeginUpdateResource со вторым параметром TRUE - это означает, что все существующие ресурсы будут удалены к тому же ты нигде не проверяшь возвращаемые значения! ф-ции иногда завершаются с ошибкой, не забывай. Проверяя возвращаемые значения ты можешь локализовать ошибку. примечание (MSDN): lpData [in] Pointer to the resource data to be inserted into the executable file. If the resource is one of the predefined types, the data must be valid and properly aligned. Note that this is the raw binary data stored in the executable file, not the data provided by LoadIcon, LoadString, or other resource-specific load functions. All data containing strings or text must be in Unicode format; lpData must not point to ANSI data.
----- EnJoy! |
|
Создано: 01 июня 2008 10:39 · Личное сообщение · #3 Jupiter пишет: нигде не проверяшь возвращаемые значения Учту. Ошибки вроде бы нет, с теми значениями, функция UpdateResource возвращает 1 Jupiter пишет: Note that this is the raw binary data stored in the executable file, not the data provided by LoadIcon, LoadString, or other resource-specific load functions Вот это не совсем понятно, т.е. в lpData ресурс должен быть в таком же виде, в каком он находиться в бинарнике? |
|
Создано: 01 июня 2008 14:08 · Личное сообщение · #4 ReZiDenT_USSR пишет: т.е. в lpData ресурс должен быть в таком же виде, в каком он находиться в бинарнике? если используются предустановленных типов (RT_CON в т.ч) - то да, ресурс должен быть выровнен и быть в "сыром" виде, каким он окажется в ресурсах советую тебе использовать не файл .ico, а другой PE-файл, из которого ты будешь дёргать иконку через FindResource/LoadResource, тогда данные будут корректными ----- EnJoy! |
|
Создано: 01 июня 2008 15:49 · Личное сообщение · #5 Jupiter пишет: использовать не файл .ico, а другой PE-файл Проблема, как раз в том, что иконку нужно доставать именно из ico.Исходников в сети практически не нашел. Есть один на масме(см. аттач) но он тоже не работает, хотя реализация вроде бы понятна. f661_01.06.2008_CRACKLAB.rU.tgz - seticon.asm |
|
Создано: 01 июня 2008 17:54 · Личное сообщение · #6 |
|
Создано: 01 июня 2008 21:27 · Личное сообщение · #7 Почитал про ico формат, переписал код, вроде бы работает но не со всеми .ico файлами d15b_01.06.2008_CRACKLAB.rU.tgz - setic.ASM |
|
Создано: 01 июня 2008 22:48 · Личное сообщение · #8 |
|
Создано: 07 июня 2008 05:18 · Личное сообщение · #9 Давным давно ради эксперимента писал программку для смены иконки на Delphi - работает через раз, но может будет полезно. a2b8_06.06.2008_CRACKLAB.rU.tgz - ChangeIconFromEXE.rar |
eXeL@B —› Программирование —› Изменение иконок в ресурсах |