Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление ресурса в exe/dll, или создание нового 
:(
    Опции темы
BaD_SeCt0R
Дата 9.9.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Вообще это возможно средствами WinAPI? Или мне придется вручную ковырыть таблицу ресурсов в PE? Если у кого был опыт, подскажите пожалуйста.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
MetalFan
Дата 9.9.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



BeginUpdateResource/UpdateResource/EndUpdateResource + F1


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BaD_SeCt0R
Дата 9.9.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Хе, точно, в BeginUpdateResource вторым параметором... А я-то всю жизнь думал, что им можно только заменять ресурсы smile MetalFan, +1 smile  Зато как создать новый ресурс, так и не нашел инфы :(


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
MetalFan
Дата 10.9.2007, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



BaD_SeCt0R, так же и создавать. UpdateResource + F1


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
BaD_SeCt0R
Дата 10.9.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Эх, разобрался уж. Пишеться все, все создается и удаляется у меня в dll. Но тут у меня потребность возникла сделать то же самое со своим exe. Создаю пробный экзэшник, в нем, естесственно только одна иконка - mainicon smile Пишу такой код:
Код

var
  Module  : Cardinal;
  Lock : PChar;
  Upd: Cardinal;
begin
  Module := LoadLibrary(PChar(paramstr(0)));
  Lock := LockResource(LoadResource(Module, FindResource(Module, MakeIntResource(1), RT_ICON)));
  Upd:= BeginUpdateResource(PChar(ExeName), false);
  UpdateResource(Upd, RT_ICON, MakeIntResource(1), 0, Lock, SizeOfResource(Module, FindResource(Module, MakeIntResource(1), RT_ICON)));
  EndUpdateResource(Upd, false);
  FreeLibrary(Module);

Этот код просто меняет главную иконку в уже готовом exe на иконку текущего моего приложения. Все работает, вижу, что дельфовая иконка в exe сменилась. Открываю exe в Restorator'е (это редактор ресурсов такой, если кому неизвестно) и вижу  smile MAINICION мало того, что не изменилась, так еще и нигде нет того, что я вписывал. Как такое возможно? Да, и еще. Если в exe иконка не имеет формата 32х32х16col, данный код либо не работает, либо "убивает" exe.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Alexeis
Дата 10.9.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



BaD_SeCt0R, иконка в экзешнике разбивается n+1 часть, где n число каров в иконке а 1 это RT_GROUP_ICON - описатель принадлежности кадров иконке. Потому для добавления или замены иконки нужно удалить группу и ее все кадры, а потом разбить свою иконку на IconDir и кадры и записать их каждую в нужную секцию.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BaD_SeCt0R
Дата 11.9.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Alexeis, я понял свою ошибку (по крайней мере кода, что я привел). Тут все дело в языках! То есть на самом деле редактирования ресурса не происходит, а создается новый языконезависимый ресурс. В итоге я получаю две иконки: русскую и от языка независящую.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.