![]() |
|
|
![]()
|
|
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Здравствуйте. Подскажите пожалуйста как добавить файл в ресурсы (не компилируя предварительно в *.RES). Допустим , при запуске программа добавляет в свои ресурсы текстовый файл, а через некоторый промежуток времени извлекает его на диск.
Подскажите как реализовать. Заранее спасибо. |
|||
|
||||
| setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
зачем это может понадобится?
|
|||
|
||||
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Необходимо сделать программу , которая бы добавляла в свои ресурсы какие-либо файлы и при необходимости их извлекала.
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Это будет проблематично, потому, что во время исполнения exe-файла он доступен для чтения, и записать он в себя ничего не может.
|
|||
|
||||
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Мне подходит также такой вариант. Одна программа просто выполняет роль записи в файл носитель (который в свою очередь будет потом проводить необходимые действия- извлекать файлы на диск по мере необходимости). А носитель , в свою очередь , содержит функции извлечения ресурсов из себя.
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
||||
|
||||
| setty |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 8.6.2006 Где: Украина Репутация: нет Всего: нет |
вопщемто можно писать в себя, если отметить секцию кода как writable.
однако что касается ресурсов, то недумаю что это является тривиальной и легковыполнимой задачей... что мешает тебе промапировать в память картинку, произвести нужные действия, сохранить при необходимости в файл и освободить файл? Зачем именно ресурсы? |
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 3 Всего: 62 |
А это уже реальный вариант. См. пример из MSDN. Тогда действие будет выглядеть примерно так: - программа 1 обновляет ресурсы программы 2, записывая в них нужные данные; - программа 2 при запуске извлекает из своих ресурсов данные и записывает их в файл; Или другой, более сложный вариант: - программа копирует себя в другой файл; - программа добавляет к своей копии новую секцию и записывает туда нужные данные; - программа удаляет себя; - при запуске копии программы она извлекает данные из новой секции и пишет их в файл; Второй вариант позволяет обойтись одной и той же программой, но требует знаний формата РЕ. Иных способов решения задачи я лично не усматриваю, поскольку запись в работающий файл запрещена. |
|||
|
||||
| denks |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 16.4.2006 Репутация: нет Всего: нет |
Решил попробовать на примере текста. Вот что получилось
Но в результате выполнения, происходит порча файла в которых записываем. Что я делаю не так ? Подскажите пожалуйста. Если можно с примерами, я начинающий в асме. Может быть дело в том что resl db ".DATA",0 . Тогда необходимо создать новую секцию и писать в неё. Подскажите пожалуйста. Спасибо. Это сообщение отредактировал(а) denks - 1.7.2006, 13:03 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
BOOL UpdateResource(
HANDLE hUpdate, // хендл обновляемого ресурса LPCTSTR lpType, // тип ресурса LPCTSTR lpName, // имя или индентификтор WORD wLanguage, // язык LPVOID lpData, // данные DWORD cbData // размер данных ); тип ресурса (ссылка) Ставь RT_RCDATA. язык -- поставь 1049 или 1033 lpData -- адресс данных в памяти. Т. е. тебе придётся загрузить в память файл. Это сообщение отредактировал(а) 586 - 1.7.2006, 16:58 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
||||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: 3 Всего: 62 |
|
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |