将可执行文件以资源的方式加入到另一个可执行文件并释放
生活随笔
收集整理的這篇文章主要介紹了
将可执行文件以资源的方式加入到另一个可执行文件并释放
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
添加資源非常簡單,這里貼出釋放代碼
//創(chuàng)建文件 bool CttDlg::CreateMyFile(CString strFilePath,LPBYTE lpBuffer,DWORD dwSize) {HANDLE hFile = CreateFile(strFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);if (hFile != NULL){//實(shí)際寫入到文件的字節(jié)數(shù)DWORD dwWritten;WriteFile(hFile, (LPCVOID)lpBuffer, dwSize, &dwWritten, NULL);}else{return false;}CloseHandle(hFile);return true; }//創(chuàng)建EXE bool CttDlg::CreateEXE(CString strFilePath,int nResourceID,CString strResourceName) {// 查找所需的資源HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(nResourceID), strResourceName);if (hResInfo == NULL){//MessageBox(NULL, "查找資源失敗!", "錯(cuò)誤", MB_OK | MB_ICONINFORMATION);return false;}// 獲得資源尺寸DWORD dwSize = SizeofResource(NULL, hResInfo);// 裝載資源HGLOBAL hResData = LoadResource(NULL, hResInfo);if (hResData == NULL){//MessageBox(NULL, "裝載資源失敗!", "錯(cuò)誤", MB_OK | MB_ICONINFORMATION);return false;}// 為數(shù)據(jù)分配空間LPBYTE pFileMem = (LPBYTE)GlobalAlloc(GPTR, dwSize);if (pFileMem == NULL){//MessageBox(NULL, "分配內(nèi)存失敗!", "錯(cuò)誤", MB_OK | MB_ICONINFORMATION);return false;}// 復(fù)制資源數(shù)據(jù)CopyMemory((LPVOID)pFileMem, (LPCVOID)LockResource(hResData), dwSize); //將內(nèi)存映射到文件bool bRet = CreateMyFile(strFilePath,pFileMem,dwSize);if(!bRet){GlobalFree((HGLOBAL)pFileMem);return false;}//釋放內(nèi)存數(shù)據(jù)GlobalFree((HGLOBAL)pFileMem);return true; }void CttDlg::OnBnClickedOk() {// TODO: 在此添加控件通知處理程序代碼//獲取當(dāng)前目錄char UpxPath[MAX_PATH];memset(UpxPath,0,MAX_PATH);GetCurrentDirectory(MAX_PATH,UpxPath);//找到fsg壓縮工具strcat(UpxPath,"\\fsg.exe");CreateEXE(UpxPath,IDR_EXE_XUNLEI,"exe");OnOK(); }超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生
總結(jié)
以上是生活随笔為你收集整理的将可执行文件以资源的方式加入到另一个可执行文件并释放的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Windows核心编程》---Inte
- 下一篇: GetLongPathName和GetS