Замена ресурсов в exe, dll
Есть 2 DLL, в каждой есть по рисунку.
Задача: Надо сменить рисунок из DLL1 на рисунок из DLL2.
(Битмап в них:
#define BITMAP_2 2
BITMAP_2 BITMAP "test/ter1bu.bmp"
т.е. мне заранее известен ID битмапа, чем я и воспользовался)
А терь реализация:
{
Задача: Надо сменить рисунок из DLL1 на рисунок из DLL2.
(Битмап в них:
#define BITMAP_2 2
BITMAP_2 BITMAP "test/ter1bu.bmp"
т.е. мне заранее известен ID битмапа, чем я и воспользовался)
А терь реализация:
Исходный код
int ChangeBitmap(){
HINSTANCE hHandle = LoadLibrary ("D:\\Projects\\Tutorials\\Res\\ResUpdate.dll");}
if (hHandle)
{HRSRC hResLoad = FindResource (hHandle, MAKEINTRESOURCE (2), RT_BITMAP);}
if (hResLoad == NULL)
{
AfxMessageBox("Не могу найти картинку.");}
return 0;
HGLOBAL hResData = LoadResource (hHandle, hResLoad);
if (hResData == NULL)
{
AfxMessageBox("Не могу загрузить картинку.");}
return 0;
LPVOID data = LockResource(hResData);
if (data == NULL)
{
AfxMessageBox("Не могу зафиксировать картинку в памяти.");}
return 0;
HANDLE hUHandle = BeginUpdateResource ("D:\\Projects\\Tutorials\\Res\\Res.dll", false);
if (hUHandle == NULL)
{
AfxMessageBox ("Не могу открыть файл для записи.");}
return 0;
BOOL result = UpdateResource (hUHandle, RT_BITMAP, MAKEINTRESOURCE (2), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), data,
SizeofResource (hHandle, hResLoad));
if (result == false)
{
AfxMessageBox ("Не могу добавить ресурс.");}
return 0;
if (!EndUpdateResource(hUHandle, false)) AfxMessageBox ("Не могу записать изменения в файл.");
if (!FreeLibrary (hHandle)) AfxMessageBox ("Не могу освободить дескриптор.");
return 1;