Экспорт ресурсов из приложения

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Хорошая функция, только вот здесь leak:

Код: Выделить всё

std::auto_ptr<BYTE> info(new BYTE[dwSize]);
Дело в том, что auto_ptr удаляет внутренний поинтер через delete, а на самом деле его нужно удалять через delete [].
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Спасибо за утилиту.

Попробовал на первой попавшейся проге. Первой попавшейся прогой оказалась WinDjView.exe. Пошуршав некоторое время, вывалилась по с ошибкой (приложил файл).
В подкаталоге WinDjView_exe успела породить файлы:

Код: Выделить всё

128.bmp              0 
149.bmp              0 
150.bmp              0 
151.bmp              0 
152.bmp              0 
153.bmp              0 
26567.bmp            0 
291.bmp              0 
30994.bmp            0 
30995.bmp            0 
30996.bmp            0 
Dialog100.bin    1,198 
Dialog101.bin    2,810 
Dialog102.bin      250 
Dialog103.bin      218 
Dialog104.bin      306 
Dialog105.bin      176 
Dialog106.bin      408 
Dialog108.bin      954 
Dialog109.bin      810 
Dialog110.bin      374 
Dialog111.bin    1,082 
Dialog112.bin      222 
Dialog113.bin    1,094 
Dialog114.bin      800 
Dialog115.bin      438 
Dialog30721.bin    232 
Dialog30722.bin    286 
Dialog30723.bin    346 
   30 файлов    12,004 байт
ОС: XP Service Pack 2, Inernet Explorer 7.0
Вложения
GrabRes-ERR.JPG
GrabRes-ERR.JPG (54.04 КБ) 252 просмотра
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Спасибо за обнаруженную ошибку. С другими программными файлами и динамическими библиотеками таких проблем не возникало. Буду разбираться...

(Через какое-то время...)
Здесь проблема не в моей программе. Всё дело в самом файле WinDjView.exe, который оказался скомпрессированым EXE-файлом и поэтому стал нечитабельным для других приложений. Я его попытался открыть с помощью Visual Studio для просмотра ресурсов и тоже получил сообщение об ошибке. В общем, чтобы извлечь из него ресурсы, нужно сначала декомпрессировать это файл с помощью той утилиты, которой он был скомпрессирован. Скорее всего это программа UPX.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

WinMain, да, наверное.
В прошлом сообщении впопыхах я только лишь указал имя файла, даже размер не указал. (А мастер все равно его нашел :) )
Попробовал натравить на него reshacker (тоже штучка бывает полезной), он дерево ресурсов показывает, но при попытке добраться до самих ресурсов, на большинство из них дает окошко с сообщением:

This file has a non-standard resource layout...
it has probably been compressed with "EXE compressor".
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Раскомпрессировал я файл WinDjView.exe программой UPX и попробовал достать ресурсы своей программой GrabRes.exe
На этот раз всё отлично получилось.
Ответить