Форум » GUI » Формат иконок в ехе-файле ? » Ответить

Формат иконок в ехе-файле ?

Andrey: Всем привет ! Кто знает в каком формате Borland 5.51 сохраняет иконки в ресурсах ехе-файла ? По идеи должны быть PE32 ресурсы, но может я не прав... Если это не PE32 ресурсы, то как привести иконки в PE32 ? Вот тестовый пример - https://cloud.mail.ru/public/3mNs/eVp4CfLFE

Ответов - 52, стр: 1 2 3 All

Haz: Andrey пишет: Кто знает в каком формате Borland 5.51 сохраняет иконки в ресурсах ехе-файла ? расшифруй - PE - Portable Executable это основной формат хранения исполнимых файлов в ОС Windows - Borland 5.51 - 32 разрядный компилятор , из него ilink32 тупо берет res файл и клеит его в PE - res файл формируется компилятором ресурсов brcc32 - формат хранения иконок - ICON , такой как задан в rс файле при описании Поскольку иконки в ресурсе описали как тип ICON , bcc при работе приложения будет обрабатывать их используя функцию LoadIcon()

Andrey: Haz пишет: расшифруй Да я тут в техподдержку бывшего Алладина (http://www.safenet-sentinel.ru/) написал письмо, а они мне в ответ пишут что формат иконок не тот. "Если иконки не защищаются – значит они вероятнее всего не относятся к PE32 ресурсам, а следовательно Envelope их защищать и не будет." Вот я и озадачился в каком формате Борланд собирает иконки ?

Haz: Andrey пишет: значит они вероятнее всего не относятся к PE32 ресурсам, Обычный ресурс PE файла , смотрится любым PE Viewer, ResHacker и прочей байдой. Может намекают на то что иконки внешние и подгружаются с диска.


Andrey: Haz пишет: Обычный ресурс PE файла Да вот не могу их убедить что это РЕ. Отправил им тестовый пример...

Andrey: Печально, оказывается иконки в ресурсах всё таки не в PE... Вот их ответ: По скриншоту видно, что загруженные Вами в проект иконки действительно не защищаются и доступны для изменения. Однако если мы посмотрим на Bitmap изображения в ресурсах, мы видим что они как раз защищены, следовательно для защиты иконок Вам требуется загружать иконки в свой проект аналогично ресурсам Bitmap изображений. Как я писал Вам ранее, иконки у Вас в проекте не относятся к PE32 ресурсам, поэтому они и не защищаются. Наверное это из за того что иконка содержится ТОЛЬКО ОДНА в файле: santa_128 ICON res\santa_128.ico santa_96 ICON res\santa_96.ico santa_72 ICON res\santa_72.ico santa_64 ICON res\santa_64.ico А если их сделать несколько в файле, то показа иконки на кнопке не будет. Это наверное все таки ограничение МиниГуи.

Haz: Andrey пишет: требуется загружать иконки в свой проект аналогично ресурсам Bitmap а в чем разница ? в RС они одинаково прописаны. Как вариант можно попробовать скомпилить RES используя компилятор ресурсов от микрософт - RC.EXE

Dima: Andrey пишет: Да я тут в техподдержку бывшего Алладина (http://www.safenet-sentinel.ru/ А какое им дело до твоих EXE , не пойму и зачем им писать ? Что то не стыкуется ?

Haz: Dima пишет: А какое им дело до твоих EXE Думаю Андрей использует их софт для защиты своих программ, но их защита не накрывает ресурсы как надо. Вот алладин и пытается сказать типа мы защищаем только "правильные" ЕХЕ , а твой кривой, вот иди сам и разбирайся Андрей, не парься ты с этой защитой , кому надо - с дампа все выдернут, а вероятность вылета проги с ошибкой увеличивается в разы. PS. как правило все ехе протекторы меняют точку входа в заголовке PE на свою процедуру расшифровки. Андрей, тебе действительно нужен это гемор с ЕХЕ ? в 2000 таких протекторов море было, но .... не прижились. Лучшим распаковщиком тогда UNP.EXE был - легко извлекал чистый ЕХЕ из любой гадости. Как вариант - поменяй компилятор ресурсов на современный , их полно бесплатных начиная от мелкомягкого RC.EXE и заканчивая бесплатным GoRc.exe ( кстати им собираю минигуёвые ресурсы )

Dima: Haz пишет: Андрей использует их софт для защиты своих программ Так и есть , знаю. Haz пишет: но их защита не накрывает ресурсы как надо Теперь понял.

Andrey: Haz пишет: и заканчивая бесплатным GoRc.exe ( кстати им собираю минигуёвые ресурсы ) А как его прикрутить к BCC ? Было бы лучше вообще МиниГуи собирать через MSC и библиотеки лучше (больше распространены) и проблема с размером ресурсов в 500 кб пропадёт.

Haz: Andrey пишет: А как его прикрутить к BCC \ синтаксис сравни, если компилировать батником - легко правится вызов, если через hbmk - то иного способа как поменять в его исходнике и пересобрать - я не нашел Andrey пишет: проблема с размером ресурсов в 500 кб пропадает при любом современном компиляторе ресурсов Вспомнил ))) я даже когдато обманку на харбуре под brcc32 писал ( программу которая принимает синтаксис brcc32 и делает правильный вызов GoRc ... давно это было)

Dima: Haz пишет: Как вариант - поменяй компилятор ресурсов на современный MinGw не покатит (знаю ты сидишь на BCC) ?

Haz: Dima пишет: MinGw скорее всего покатит

Dima: Haz пишет: скорее всего покатит Но надо чекать и скорее всего весь проект тоже надо пересобрать под ним.

Haz: можно собрать RES любым компилятором и сунуть его в папку где его brcc32 формирует при сборке ( можно атрибут ридонли дать ) и линкер его сожрет как более новый. но это неудобно т.к. такой цирк нужно при каждой линьковке делать.

Andrey: Dima пишет: MinGw не покатит (знаю ты сидишь на BCC) ? Под MinGw нет библиотек для Sentinel LDK (это защита приложений для ключей HASP HL. Защита хорошая, проблем с ней нет). Не поддерживает Алладин этот компилятор. Остаётся BCC и MSC. Под BCC мало что поддерживают, уходит в прошлое. Для MSC лучшее кол-во библиотек и поддерживается лучше.

Dima: Andrey пишет: Защита хорошая, проблем с ней нет Читай выше что писал Has PS Чую щас нафлудим в теме ))

Andrey: Всем привет ! Сделал тестовый пример по иконкам. Хочу полностью разобраться с этими иконками ! https://cloud.mail.ru/public/CuPx/ZuLEbXL27 С учётом опыта выяснил следующее: 1) Иконки в МиниГуи собранные BCC в приложении не относятся к PE32 ресурсам. 2) Размер ресурсов собранные BCC 5.5.1 не должен превышать размера 500 кб в одной секции, иначе отказ от сборки приложения. Для увеличения размера ресурсов в приложении нужно создавать новый .rc файл Cмотрите пример, там в Icons_All.rc лишние ресурсы за комментированы. Для увеличения размера можно так же перейти на BCC 5.8.2 или MinGw. 3) Для правильного отображения главной иконки программы - первая иконка должна быть 16х16-256 colors format в файле иконки. 4) Вид приложения собранные BCC в проводнике не поддерживает режим "Огромные значки" (иконки 128х128 не задействуются). 5) Для использования разных размеров иконок в приложении МиниГуи нужно эти иконки размещать отдельным файлом в ресурсах приложения и тогда эту иконку можно выводить на форму или кнопку. Пример файла ресурсы.rc: iSanta128 ICON res\iSanta128.ico iSanta96 ICON res\iSanta96.ico iSanta72 ICON res\iSanta72.ico iSanta64 ICON res\iSanta64.ico iSanta48 ICON res\iSanta48.ico Вывод на форму DRAW ICON IN WINDOW Form_1 AT 20, 20 PICTURE 'iSante128' WIDTH 128 HEIGHT 128 Кстати Григорий так и не дал в библиотеке наглядного примера ! Я понимаю, для многих это очевидные вещи, но для новичков это первые непонятки в МиниГуи (хотя это относится к компилятору BCC 5.5.1, а не к МиниГуи). Остались ещё вопросы по иконкам: 1) Как вывести НУЖНЫЙ ресурс иконки на форму/кнопку из ресурсов своего приложения - файла библиотеки иконок (т.е. когда все размеры иконок в одном файле) ? 2) Как вывести НУЖНЫЙ ресурс иконки на форму/кнопку из файла ресурсов системы: System.SystemFolder + "\shell32.dll" ? Т.е. хочется работать с иконками размера 48х48 или 64х64 - экраны же у всех давно большие ! И ещё просьба к тем, кто работает с MinGw - помогите собрать тестовый пример на MinGw, там ошибка ресурсов какая-то....

Dima: Andrey Для начала в RC у тебя так 1MAIN_ICO ICON res\2MiniGui.ico 1MAIN_ICO2 ICON res\1MiniGui.ico Убери цифру перед MAIN , в BRC возможно это и проходит. ЗЫ Winres же пишет в какой строке непонятка в rc файле.

Andrey: Dima пишет: Убери цифру перед MAIN , в BRC возможно это и проходит. Убрал - ошибка эта ушла. Вылезла другая: hbmk2: Compiling resources... windres.exe: Icons_All_Hmg.rc:18: syntax error hbmk2[Icons_All_MinGw]: Error: Running resource compiler. 1 18 строка: PRODUCTVERSION 1,0 Я так понял, что у MinGw свой синтаксис ресурсного файла. Дайте пожалуйста у кого есть - как правильно перечислить все там VALUE "FileDescription", .... VALUE "FileVersion" , .... VALUE "InternalName" , ... VALUE "LegalCopyright" , ... VALUE "LegalTrademarks", ... и т.д.



полная версия страницы