Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизКак заменить ресурс? Найти похожие ветки
← →
Dot (2004-10-08 23:12) [0]Мастера! Есть фпйл 1.ехе в нем содержится картинка/иконка/итд в виде ресурса.
У меня есть 1.bmp допустим или что нить еще.
Как мне программно заменить картинку в фале на 1.bmp ?????
файл не мой и не я его создавал .
← →
cerber1 © (2004-10-09 13:45) [1]Bспользуй Resource Hacker и не мучайся. А если програмно, то в хелпе к Resource Hacker описано как это делать.
← →
Okcid (2004-10-09 17:28) [2]
> cerber1 © (09.10.04 13:45) [1]
ResHack конечно хорошо, но хелп(во всяком случае в моей версии) там на англицком...
← →
Dot (2004-10-09 23:22) [3]Нет что значит воспользуйся РеСХАкером, это не ответ, если не знаешь то не отвечай пожалуйста.
← →
Anti (2004-10-11 21:52) [4]Мастера а что поправде нет ниче? ато тоже ищу как бы?
← →
Fay © (2004-10-11 22:02) [5]Вы что, издеваетесь? MSDN у нас для кого?
Только не надо говорить, "там на англицком" - янки на Си не балакают.
← →
Fay © (2004-10-11 22:03) [6]Сам проверять не буду - есть другие дела.
HRSRC hResLoad; // handle to loaded resource
HANDLE hExe; // handle to existing .EXE file
HRSRC hRes; // handle/ptr. to res. info. in hExe
HANDLE hUpdateRes; // update resource handle
char *lpResLock; // pointer to resource data
BOOL result;
// Load the .EXE file that contains the dialog box you want to copy.
hExe = LoadLibrary("hand.exe");
if (hExe == NULL)
{
ErrorHandler("Could not load exe.");
}
// Locate the dialog box resource in the .EXE file.
hRes = FindResource(hExe, "AboutBox", RT_DIALOG);
if (hRes == NULL)
{
ErrorHandler("Could not locate dialog box.");
}
// Load the dialog box into global memory.
hResLoad = LoadResource(hExe, hRes);
if (hResLoad == NULL)
{
ErrorHandler("Could not load dialog box.");
}
// Lock the dialog box into global memory.
lpResLock = LockResource(hResLoad);
if (lpResLock == NULL)
{
ErrorHandler("Could not lock dialog box.");
}
// Open the file to which you want to add the dialog box resource.
hUpdateRes = BeginUpdateResource("foot.exe", FALSE);
if (hUpdateRes == NULL)
{
ErrorHandler("Could not open file for writing.");
}
// Add the dialog box resource to the update list.
result = UpdateResource(hUpdateRes, // update resource handle
RT_DIALOG, // change dialog box resource
"AboutBox", // dialog box name
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), // neutral language
lpResLock, // ptr to resource info
SizeofResource(hExe, hRes)); // size of resource info.
if (result == FALSE)
{
ErrorHandler("Could not add resource.");
}
// Write changes to FOOT.EXE and then close it.
if (!EndUpdateResource(hUpdateRes, FALSE))
{
ErrorHandler("Could not write changes to file.");
}
// Clean up.
if (!FreeLibrary(hExe))
{
ErrorHandler("Could not free executable.");
}
← →
Nick Denry © (2004-10-12 00:00) [7]Сам проверять не буду - есть другие дела
Работает.
← →
cerber1 © (2004-10-12 00:13) [8]Есть два вариента решения твоей "проблемы":
1 через формат РЕ файлов
2 Через функции АПИ:
BeginUpdateResource...
UpdateResource...
но если ты не знаешь точного неазвания ресурса в проге, то тебе надо его найти, выдрать и заменить, а это уже больше функций АПИ:
EnumResourceName
enumResourceType... и.т.д
2 Fay
ResHacker поддерживает режим замены через скрипт, а это проще чем размалеввывать толпу callback-функций и потом рыться в их содержимом. А MSDN - это всегда успеешь.
← →
Fay © (2004-10-12 03:11) [9]
> А MSDN - это всегда успеешь.
MSDN - рано не бывает 8)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c