程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 怎樣通過一個程序來生成另一個程序

怎樣通過一個程序來生成另一個程序

編輯:關於C++

前不久大家都在討論怎樣通過一個程序來生成另一個程序,我提出了將另一個程序當資源文件包含在程序中一起編譯,然後在程序運行時根據需要再重新生成出來,下面是我的一個例子, 在這裡,我將windows自帶的寫字板(writer.exe)當資源.

下面是源代碼

//資源文件writer.exe長度為204800,在資源文件中定義為"CUSTOM"資源,編號為1111
  HRSRC  hMyRes;   //resource handle
  HGLOBAL  hgpt;    //resource pointer
  LPVOID  lpBuff;   //resource buffer pointer
  DWORD   rcSize=204800;  //resource size
  HANDLE  hFile;//file to write
  LPDWORD dwByte;//byte size had been write
  dwByte=&rcSize; //locate the resource and load the resource to memory and lock it
  hMyRes=FindResource((HMODULE)GetWindowLong(Handle,GWL_HINSTANCE),MAKEINTRE SOURCE(1111),"CUSTOM");
  if(hMyRes==NULL)
   ShowMessage(SysErrorMessage(GetLastError()));
  hgpt=LoadResource(NULL,hMyRes);
  if(hgpt==NULL)
   ShowMessage(SysErrorMessage(GetLastError()));
  lpBuff=LockResource(hgpt);
//now i will read the resource and write it to an file
  try
   {
   hFile=CreateFile("e:\\mywriter.exe",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
   WriteFile(hFile,lpBuff,rcSize,dwByte,NULL);
   if(*dwByte!=204800)
    ShowMessage("Failed to write to file");
   }
   __finally
   {
   CloseHandle(hFile);
   }

在資源的添加與生成時,我用Borland ResourceWorkShop4.5沒辦法做,最後是用vb6帶的資源編輯器生成的res文件.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved