Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Замена ресурсов в exe/dll

Вот заметил, что многих этот вопрос интересует, но ответа на него четкого так дано и не было,
потому решил написать небольшой пример ( сразу прошу прощения за кривой код :\ )
Значит так:
Есть 2 DLL, в каждой есть по рисунку.
Задача: Надо сменить рисунок из 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;
}



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS