1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include <iostream>
#include <stdlib.h>
#include <fstream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
HINSTANCE hinst = (HINSTANCE) GetModuleHandle(NULL);
HRSRC resImg;
HRSRC resExe;
HGLOBAL global;
LPVOID ptrImg;
LPVOID ptrExe;
DWORD res_len_img, file_len_img;
DWORD res_len_exe, file_len_exe;
DWORD err;
resImg = FindResource(hinst, "MonImage", "RT_BITMAP");
if (!resImg) return (1);
resExe = FindResource(hinst, "MonExe", "ID_EXE");
if (!resExe) return (1);
global = LoadResource(hinst, resImg);
if (!global) return (1);
ptrImg = LockResource(global);
if (!ptrImg) return (1);
global = LoadResource(hinst, resExe);
if (!global) return (1);
ptrExe = LockResource(global);
if (!ptrExe) return (1);
res_len_img = SizeofResource(hinst, resImg);
file_len_img = *((DWORD *) (((char *) ptrImg) +2));
if (file_len_img > res_len_img) return (1);
res_len_exe = SizeofResource(hinst, resExe);
file_len_exe = *((DWORD *) (((char *) ptrExe) +2));
if (file_len_exe > res_len_exe) return (1);
ofstream osImg("P:\\Dev-Cpp\\My_exe6\\image_res.bmp", ios::binary);
osImg.write((char *) ptrImg, file_len_img);
ofstream osExe("P:\\Dev-Cpp\\My_exe6\\exe_res.exe", ios::binary);
osExe.write((char *) ptrExe, file_len_exe);
osExe.close();
return 0;
} |
Partager