Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.238.198.167] |
|
Сообщ.
#1
,
|
|
|
Как с помошью Дельфи поменять иконку у чужого EXE-файла, если ее нет то вставить ее туда???
|
Сообщ.
#2
,
|
|
|
В факе, подмена ресурсов.
|
Сообщ.
#3
,
|
|
|
Сообщ.
#4
,
|
|
|
Хех - не все так просто
С ресурсами работать без проблем, а вот подмена именно главной иконки приложения может привести к появлению очередных шишек на лбу программиста Спросите у Dufa - он в свое время делал этот трюк... |
Сообщ.
#5
,
|
|
|
Пример на скорую руку написан, так что на его внешний вид и т.д внимания не обращать. Там используется acWorkRes немного исправленный
Прикреплённый файлoo.rar (11.01 Кбайт, скачиваний: 1627) |
Сообщ.
#6
,
|
|
|
s-mike не ту ссылочку дал, там нерабрчий вариант.
Подмена ресурсов |
Сообщ.
#7
,
|
|
|
Большое спасибо всем
Очень очень благодарен |
Сообщ.
#8
,
|
|
|
Dufa, огромнейшое тебе спасибо за модуль который находится в архиве!!!!!!!!!!! Спас жизнь!!!! Я так долго над эти бился!!!!
[+] Добавлено У меня есть только вот какой еще вопрос: как заменить иконку у exe файла если размер этой иконки в exe файле не совпадает с размером иконки в файле .ico? То есть если размер этот больше? Какие есть соображения? |
Сообщ.
#9
,
|
|
|
BenQ, Он должен заменить
|
Сообщ.
#10
,
|
|
|
поменять заголовок файла и ваще всё пропатчить...
|
Сообщ.
#11
,
|
|
|
Извените за глупый вопрос , но как этим пользоваться?
|
Сообщ.
#12
,
|
|
|
Цитата mckie @ Извените за глупый вопрос , но как этим пользоваться? Как, как... Dufa, же выложил архив... Там пример есть... |
Сообщ.
#13
,
|
|
|
Парни, а вы не пробовали прогу у которой ресурс(иконка) заменяется(а на самом деле вставляется, а прежняя иконка остаётся на месте) запускать? Я пробовал. Не работает. Выдаёт ошибку. А у вас? И ещё, а если прога проверяет свою контрольную сумму, то с новой иконкой заменённой (а тем более просто вставленной) она ведь выдаст ошибку. Может кто выложит пример реально заменяющий оригинальную иконку, и притом чтоб программа потом запускалась. Былоб интересно посмотреть, ато что-то уже заколебался, никак не полуается сделать нормальную замену.
Добавлено Беру некоторые свои слова назад. Программы работают с добавленной иконкой, но не все. Некоторые не работают. А вот в BeginUpdateResourceS(Edit1.Text, False); Второй параметр должен при True по идее заменять иконку в EXE файле а при Fаlse добавлять её. А на самом деле при True он удаляят все ресурсы из EXE фала и добавляет иконку. При этом файл понятное дело не запускается. Это нехорошо. |
Сообщ.
#14
,
|
|
|
Если подменять или добавлять ресурс (как это делать можно найти тут на сайте), надо смотреть, что бы ехе"шник не был запакован (upx, aspack, и т.д.). Если *.ехе запакован и вы добавили ресурс, то приложение запускатся не будет однзначно.
|
Сообщ.
#15
,
|
|
|
самый лучший подход использовать BeginUpdateResource, UpdateResource, EndUpdate У меня исходника щас нет, он в несколько строчек, на С++ в инете дофига можно найти инфы по смене значка с их использованием, вместе с коментариями что она не работает в Delphi(=>> При использовании функции UpdateResource вместо константы RT_ICON следует использовать ее идентификатор, т. е 3 )
|
Сообщ.
#16
,
|
|
|
AVS-INTERSOFT, Да я ж пример выложил. Он точно пашет
|
Сообщ.
#17
,
|
|
|
Uses
acWorkRes; procedure ExportData(Path, AName: string; Data: TFileStream); overload; var hFile: HWND; Buf: array of Byte; begin hFile := BeginUpdateResource(PChar(Path), False); try if hFile = 0 then begin RaiseLastOSError; end; SetLength(Buf, Data.Size); Data.Position := 0; Data.Read(Buf[0], Data.Size); if not UpdateResource(hFile, RT_GROUP_ICON, PChar(AName), 0, @Buf[0], Data.Size) then RaiseLastOSError; Finalize(Buf); finally EndUpdateResource(hFile, False); end; end; sImage5.Picture.LoadFromFile(OpenDialog1.FileName); // Грузим иконку в картинку image /// Тут сменяем иконку var q: dword; begin q := BeginUpdateResourceS(SaveDialog1.FileName + '.exe', False); if q <> 0 then begin if not ReplaceIconGroupResourceS(q, 'MAINICON', 0, OpenDialog1.FileName) then caption := ('Иконка не установлена!!!'); EndUpdateResource(q, False); end; end; Помогите с кодом |