| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Подмена ресурсов |
| Автор: Alex 9.4.2004, 21:44 |
| Для общего пользования выкладывается модуль работы с ресурсами в PE файлах, который корректно работает во всех версиях Windows. За основу был взят модуль работы с ресурсами компании Mathias Rauen, http://www.madshi.net. Возможности: 1. Извлечение иконок из ресурсов без потери их цветовой гаммы и с сохранением всех вложенных иконок. 2. Добавление нового ресурса 3. Изменение существующего ресурса 4. Удаление ресурса 5. Работа с ресурсами различных языков и т. д. Работа над модулем будет продолжена. Свежую версию, вы всегда можете скачать по адресу http://alex-co.org/files/delphi/acWorkRes.rar |
| Автор: p0s0l 11.4.2004, 15:05 |
| Через пару дней этот топик скатится вниз и уйдёт в небытие. Кто-то предлагал идею сделать типа архива исходников или что-то в этом роде. Но заглохло пока. Если ещё пару человек выложат какие-нибудь модули или исходники, можно будет создать отедельную тему и её закрепить, а там оставлять ссылки на сами темы, чтобы не было "месива"... |
| Автор: Alex 11.4.2004, 17:13 |
| Могу стать Модератор нового раздела |
| Автор: bartram 11.4.2004, 17:28 |
| alex-co, скинь примерчик работы с модулем please, очень надо !!! |
| Автор: RA 11.4.2004, 17:34 | ||
p0s0l Ты главное пробей эту тему, а там народ сам потянется исходники выкладывать, лично я уже давно мечтаю выложить несколько исходнико о каторых наверняка многие мечтают (судя по топикам форума). |
| Автор: Alex 11.4.2004, 17:36 | ||
А с каким именно ресурсом нужен пример работы? |
| Автор: bartram 11.4.2004, 17:37 | ||
С ресурсом типа string, bitmap !!! |
| Автор: Alex 11.4.2004, 18:18 | ||||||||
Со строками пока сам не разобрался, а с Bitmap все просто. Если хочешь с заданием языка, то так:
Без указания языка:
Добавлено @ 18:25 У кого есть пример подмены строковых ресурсов с помощью стандартной функции UpdateResource просьба сообщить. Есть пример на С но моих знаний С не достаточно чтобы в нем разобраться может кто поможет. |
| Автор: Alex 11.4.2004, 18:27 |
| Вот и сам пример на С |
| Автор: bartram 11.4.2004, 20:07 |
| alex-co, у меня есть прога которая конвертирует из Си в Pas через пару дней выложу может поможет !! |
| Автор: Alex 18.4.2004, 00:23 |
| Обновление: -Добавлена функция "StringToPWide" - Преобразование String в PWideChar - Исправлена ошибка в функция "GetNameIcon" - Добавлена функция "SaveIconToDiscW" - Сохранение иконки Адрес загрузки старый |
| Автор: Alex 17.7.2004, 18:26 |
| Обновление: - Добавлена функция "PWideToString" - Преобразование PWideChar в String. - Исправлена ошибка в функция "SaveIconToDiscW", которая возникала на некоторых системах семейства Win9x. Адрес загрузки старый |
| Автор: Ilya26 20.7.2004, 11:25 |
| alex-co, можешь привести пример работы с jpg ресурсами а также с rtf файлами. Очень, очень надо !!! Заранее спасибо. Добавлено @ 11:26 alex-co, можешь привести пример работы с jpg ресурсами а также с rtf файлами. Очень, очень надо !!! Заранее спасибо. |
| Автор: Alex 20.7.2004, 11:57 |
| Что именно вам нужно запись, чтение или что-то еще? |
| Автор: SlaUr 20.7.2004, 14:28 | ||
Вроде бы ведь сделали общий топик "арсенал форумистов" : http://forum.vingrad.ru/index.php?showtopic=21411 Почему бы не выложить туда? p.s. У меня лично этот топик показывается в разделе "Важные темы" |
| Автор: Alex 20.7.2004, 14:39 | ||||
Да если ты внимательно почитаешь, арсенал форума то увидишь, что этот топик там самый первый. |
| Автор: Ilya26 21.7.2004, 16:04 |
| alex-co, Желательно бы и запись, и чтение. (запись в другой exe-файл) |
| Автор: Alex 21.7.2004, 21:59 |
| Обновление: - Добавлена функция "LoadFileResourceW" - Функция записи файла в ресурсы. - Добавлена функция "LoadFileResource" - Функция записи файла в ресурсы без задания языка. - Добавлена функция "SaveFileResourceW" - Функция извлечение файла из ресурсов. - Добавлена функция "SaveFileResource" - Функция извлечение файла из ресурсов без задания языка. - Добавлена функция "SaveFileToDiscW" - Сохранение ресурса ввиде файла на диск. - Добавлена функция "LoadFileToResourceW" - Сохранение ресурса в виде файла на диск. Адрес загрузки старый |
| Автор: Alex 21.7.2004, 22:11 | ||||||||||||
Ilya26 Значит так, для добавления файла в ресурс воспользуйся функцией:
Для сохранения файла на диск воспользуйся функцией:
Для загрузки Jpg файла в Image сделай
Если тебе нужно загрузить из самого себя, то напиши
Если тебе нужно загрузить из другого файла
Для загрузки Rtf
|
| Автор: Anderson 31.8.2004, 18:56 |
| Подключаю модуль, а у меня выходи ошибка: "Не найден файл acWorkRes.dcu" Где его достать-то? |
| Автор: Alex 31.8.2004, 22:56 | ||
Читаем самое первое сообщение в этой теме |
| Автор: Alex 26.11.2004, 21:01 |
| Обновление: - Были сделаны все изменения, которые сделал разработчик madRes в версии 1.0h. Адрес загрузки старый |
| Автор: Budy 3.7.2005, 15:16 |
| Alex, рулишь, чувак! Пользуюсь твоей процей LoadFileToResourceW, а вот объясни как теперь удалить лишние... |
| Автор: Alex 3.7.2005, 19:03 | ||
Если без понтов и четко объяснишь, что тебе нужно, то может и помогу... |
| Автор: Budy 4.7.2005, 06:20 |
| Alex, да какие понты, просто настроение было норм. Короче, спасибо тебе за столь удобный в использовании модуль, вот. Дело вот в чем: допустим в ресурсе (.exe) уже имеется какой-нить файл-ресурс, и мне его надо удалить. И еще вопрос, как можно узнать весь список файлов-ресурсов в ресурсе. ЗЫ.Ну каламбур, ресурс в ресурсе |
| Автор: Alex 4.7.2005, 12:01 | ||
Писал на вскидку, без проверки:
Смысл в том, что если функции UpdateResourceW указать нулевой размер данных, то ресурс удаляется |
| Автор: Budy 6.7.2005, 06:20 |
| Alex, сэнк. Ну вот пора бы и обновить версию |
| Автор: Budy 11.8.2005, 19:59 |
| А как узнать весь список всех ресурсов в файле? |
| Автор: Kondragor 14.9.2005, 22:35 |
| У меня почему-то перестал работать модуль. Просто ни с того, ни с сего взял и перестал. Когда это произошло не знаю так как заметил не сразу, поэтому и сказать из-за чего это произошло не могу. Переставлял Delphi7, пробовал с чистой, без других компонентов, Delphi в чистом проекте все равно не работает. Просил друга - у него все пашет. Что и делать не знаю - пользовался одной единственной функцией SaveIconToDiscW, но она очень нужна для программы. Возможно кто-нибудь знает из-за чего это может происходить или хотя бы подскажите плиз альтернативный способ извлечения иконки из exe,dll и сохранение ее на диск, хотя бы 16*16 но не меньше 32bit? |
| Автор: Alex 14.9.2005, 23:32 |
| Подготовь демо проект, в который включи exe или dll, из которого ты пытаешься вытащить ресурс. |
| Автор: Kondragor 14.9.2005, 23:43 |
| Прошу http://www.kondragor.nm.ru/test.rar |
| Автор: Alex 14.9.2005, 23:53 |
| Не компилируя тестовый проект, запустил его и у меня все спокойно достали. |
| Автор: SergeBS 15.9.2005, 10:54 |
| Kondragor Resource Hacker Из exe/dll - иконки выдирает. редактировать и т.п. - не пробовал. Сходи еще на download.ru - там наверняка тоже есть такое. Добавлено @ 11:02 Kondragor Вдогонку Resource Hacker 3.4.0.79 - 24.03.2002 - в архиве rar - 450 K. НО быстро выслать не обещаю - отпуск, однако. |
| Автор: Alex 15.9.2005, 17:41 |
| SergeBS, а немного тему почитать и понять, что человеку это программно нужно сделать... |
| Автор: Guest 7.10.2005, 05:14 | ||
Хочу кое что заметить. Во-первых, Alex, измени код правильно, ошибка кода в топике
Во-вторых, обнови уже свой файл в инете, а то вот классную функцию дописал, а в модель не добавил Ну и в-третьих: может все же кто-нить подскажет как узнать список всех ресурсов в файле? |
| Автор: Alex 7.10.2005, 07:09 |
| как только будет время займусь. если очень не терпится, кто мешает сделать вам это самостоятельно? |
| Автор: mefik 1.12.2005, 16:50 | ||
| А как стандартный тип ресурса использовать? Например RT_VERSION Пробовал StringToPWide(RT_VERSION) нифига не получается....
Стандартной функцией VerQueryValue получается, но мне надо после считывания, еще изменить пару строчек. просто VS_VERSION_INFO блок, единственный, который upx не упаковывается... |
| Автор: allx 19.4.2006, 00:10 | ||
| Alex, Расскажите плиз как достать и изменить ну например строку в екзешнике используя данный модуль... код следующий:
Ссылку на буффер функция не возвращает, размер тоже. Я вот еще не уверен, что за Name, третьий параметр GetResourceW(). Я правильно полагаю что это имя ветки? |
| Автор: Alex 19.4.2006, 17:34 |
| allx, я скажу так, как доставать и изменять строки хранящиеся в ресурсах я не знаю |
| Автор: allx 19.4.2006, 21:17 | ||
| Alex, Чьерт )) Как достать строку я более-менее разобрался. Скорее менее чем более. Итак.
Код теперь работает. Остается открытым вопрос, как изменить строки... И почему парсинг строковых ресурсов во всяких PE Explorer, ResHacker, XN ResourceEditor, Restorator и иже с ними мягко говоря отличается от того что получается у меня.... |
| Автор: allx 19.4.2006, 22:39 |
| Народ, давайте вместе добьем эти несчастные строки... имхо будет хорошим дополнением к AcWorkRes )) c форматом итоговых строк разобрался - 1) 1 байт размера элемента строки 2) строка соотв. размера 3) 1 байт размера элемента строки 4) строка соотв. размера итд |
| Автор: allx 20.4.2006, 21:50 | ||
| ну я собсно разобрался в этой канители. как отлажу код - отпишусь наверное. обновлять ресурсы оказалось довольно просто:
|
| Автор: Budy 13.6.2006, 05:47 |
| Alex, и все же ждем процедуры "Show_List_Of_All_Resources_In_File" |
| Автор: Dino99rus 4.4.2007, 21:45 |
| LoadFileToResourceW исполбзую эту функцию все ок. Но вот с использованием SaveFileToDiscW не получаеться. Он не создает файл из ресурса, а вообще как после LoadFileToResourceW загрузить файл в мемо. Не понимаю объеснити плиз |
| Автор: Dino99rus 5.4.2007, 16:56 |
| Все броблему решил |
| Автор: Dino99rus 5.4.2007, 22:28 | ||||
Народ все хорошо получается. Запись в ехе файл и сохранение этих файлов на диск.
Плиз, подскажите как можно не сохраняя на диск файла, а сразу его загрузить например в МЕМО. Пожалусто подскажите |
| Автор: Alkash 6.4.2007, 10:04 |
| Сохраняй в поток-) |
| Автор: Dino99rus 6.4.2007, 15:40 |
| Да ты прав спасибо. Все ок... (глупые вопросы здаю |
| Автор: karlos34 18.11.2007, 17:04 | ||
Может немного туповатым покажется вопрос, но: используя LoadFileToResourceW добавляю в библиотеку картинку. вроде все ок, но прога, которая использует картинки из этой библиотеки не может подключить эту картинку. в ресхакере открываю - вроде все есть, НО: когда добаляю картинку (нужно заменить старую на новую) - не заменяет, а добавляет новый тип ресурса. короче вот часть кода:
Нужно сделать так, что б прога заменяла картинку в библиотеке по ее типу ресурса и имени. в результате вот что в библиотеке |
| Автор: karlos34 18.11.2007, 22:09 |
| понял в чем дело: моя прога работает с рисунками типа Bitmap и типом информации (Data type) Bitmap. а когда я добавляю рисунок - тип рисунка - Bitmap, а тип данных - Bitmap image. но от этого не легче... помогите кто знает как решить проблемму. |
| Автор: my666 18.12.2007, 15:41 |
| кто-нить объяснит как работать со строковыми ресурсами типа RT_String? |
| Автор: fgn1 11.1.2008, 17:19 |
| Кто-нибудь, помогите решить проблему. Есть файл без расурсов, соответственнно без секции ресурсов. Надо запихнуть туда иконку. Секция как я понял, автоматически не создаётся (сложно?). Даже если секция присутствует, необходимо создать группу иконок... вобщем Заранее спасибо |
| Автор: DelphiExpert1 17.5.2010, 15:03 | ||
Небольшой модуль для работы со строками:
|
| Автор: simsmann 3.2.2011, 21:47 | ||||
Не работает приведенный код по выгрузке jpg из ресурса допустим в Image
Вот вызов
С загрузкой jpg в ресурс и выгрузку в файл на диске все окей, а вот выгрузка в Image - ОШИБКА! Помогите в чем дело! |
| Автор: MetalFan 4.2.2011, 11:25 |
а откуда взялася MemStream? Судя по коду туда надо просто Stream вставить. |
| Автор: simsmann 5.2.2011, 02:23 |
| С этим понятно, это было подпраленно, тут дело в другом. В прочем вариант я нашел. В указанном вышге коде вообще несколько ошибок. Ясделал по другому, причем можно 2 вариантами. |
| Автор: CodeMonkey 5.2.2011, 02:45 |
| В оригинальную тему про BeginUdate/Update/EndUpdateResource на всех платформах: http://www.transl-gunsmoker.ru/2010/11/mslu.html. Вовсе не нужно было их реализовывать с нуля самому. Ну и ещё в тему http://www.transl-gunsmoker.ru/2008/12/blog-post_9202.html. |
| Автор: northener 5.2.2011, 03:30 |
| <offtop> Некроманты/Некрофилы, блин. </offtop> |