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