MFC,如何将一个exe写可执行程序嵌入到C++程序成为单文件,MFC点击按钮后将嵌入的exe其提取到C:\Debug文件夹
时间: 2024-03-20 07:39:09 浏览: 16
你可以使用以下步骤将一个exe写可执行程序嵌入到C++程序中:
1. 将exe文件作为资源文件添加到MFC工程中。方法是右键单击工程,在弹出的菜单中选择“添加”>“资源”>“导入”。
2. 在MFC程序启动时,将exe文件从资源中提取出来并写入到磁盘上的一个临时文件中。可以使用以下代码实现:
```
HMODULE hModule = AfxGetResourceHandle();
HRSRC hRes = FindResource(hModule, MAKEINTRESOURCE(IDR_EXE1), _T("EXE"));
HGLOBAL hResData = LoadResource(hModule, hRes);
DWORD resSize = SizeofResource(hModule, hRes);
LPVOID lpResData = LockResource(hResData);
CString tempFilePath = _T("C:\\Debug\\temp.exe");
HANDLE hFile = CreateFile(tempFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD bytesWritten;
WriteFile(hFile, lpResData, resSize, &bytesWritten, NULL);
CloseHandle(hFile);
```
其中,IDR_EXE1是你添加的exe资源的ID。
3. 在MFC程序中添加一个按钮,当按钮被点击时,启动刚刚提取出来的exe文件。可以使用以下代码实现:
```
CString tempFilePath = _T("C:\\Debug\\temp.exe");
ShellExecute(NULL, _T("open"), tempFilePath, NULL, NULL, SW_SHOWNORMAL);
```
这将启动C:\Debug\temp.exe文件。
4. 如果需要在程序退出时删除临时文件,可以在MFC程序退出时添加以下代码:
```
CString tempFilePath = _T("C:\\Debug\\temp.exe");
DeleteFile(tempFilePath);
```