![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Вот заметил, что многих этот вопрос интересует, но ответа на него четкого так дано и не было, потому решил написать небольшой пример ( сразу прошу прощения за кривой код :\ )
Значит так: Есть 2 DLL, в каждой есть по рисунку. Задача: Надо сменить рисунок из DLL1 на рисунок из DLL2. (Битмап в них: #define BITMAP_2 2 BITMAP_2 BITMAP "test/ter1bu.bmp" т.е. мне заранее известен ID битмапа, чем я и воспользовался) А терь реализация:
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Если кому надо, могу выслать проект и ДЛЛы.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: 3 Всего: 3 |
Да, но ведь BeginUpdateResource пашет только в WinNt/2000/XP, а как обновить ресурс под Win9x ?
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Ну насчет этого есть токо предположение...таким я не занимался %) дык вот
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| suborg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
А других вариантов, я так полагаю, и нету. Ну, по крайней мере документированных и не подразумевающих перелинковку файла вручную. Один нюанс - в виндах на базе NT можно таким образом менять ресурсы независимо от их размера, а при побайтовой замене в 95 придется придерживаться жестких рамок.
|
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: 3 Всего: 3 |
Мне вот интересно, если я знаю ID ресурса, как мне(В Win9x) найти offset этого ресурса от начала файла, узнать его размер и т.д
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| suborg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
Na skolko ya ponimayu, funkciyami FindResource i LoadResource mozhno poluchit' sami resursy, a ih uzhe mozhno iskat' v dll i exe kak izvestnye dannye vnutri fayla. No luchshe vse taki pochitat' format Portable Executable.
PS: sorry za transliteraciyu - linux postavil, s russkim yazykom esho ne razobralsa |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: 3 Всего: 3 |
А вот заменять сложнее, нужно передвинуться по файлу на позицию ресурса, и потом туда raw data писать, но как ты сказал, там строгие рамки. Я знаю программы, которые заменяют ресурсы под Win9x и при том можно заменить, допустим 1 .bmp на другой .bmp любого размера, как же они так делают ?? -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: 3 Всего: 3 |
Кстати, я тут вспомнил, что когда-то писал прогу, которая из файла все ресурсы выдирает(можно и выборочно), притом определяет, что за ресурс, bmp, wav и т.д. Кому надо могу дать исходник, только она не доделана до конца, нет UpdateResource
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
На самом деле реально вписывать ресурсы любого размера...надо токо поправить за собой заголовок ( срс, размер и т.д.)
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| suborg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
А CRC играет какую-то роль?
Ведь когда патчишь EXE, никаких проблем с CRC не возникает, несмотря на явное изменение. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Смотря какие ехе
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Это все ерунда а вот как использовать ресурс из DLL например AVI или еще чтонибуть, кто знает скиньте пример?! [email protected]
|
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
jeslji ispolzujetsa windows animation control, to naprimer Animate_OpenEx(hwnd, hinst, lpszName)
hwnd - handle na animation control hinst - handle na tvoi dll v lpszName mozjno zapsatj MAKEINTRESOURCE(avi_res_id) , gje avi_res_id - id tvojevo AVI resursa see MSDN;) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |