리소스 데이터를 파일로 저장.

구현코드 : 계산기 파일을 리소스에 포함시킨 상태로 컴파일 후 실행시 현재디렉토리에 생성

#include "stdafx.h"
#include "resource.h"

void main()
{
 HRSRC hResource;
 HGLOBAL hResData;
 LPVOID lpResource;
 DWORD dwSize;
 HANDLE hFile;
 DWORD dwNumberOfBytes;

 hResource = FindResource(GetModuleHandle(0),MAKEINTRESOURCE(IDR_FILE1), TEXT("FILE") );
 // 리소스의 핸들값을 얻어온다

 hResData = LoadResource(GetModuleHandle(0),hResource);
 // 지정된 리소스를 메모리로 로드한다. 반환값은 로드된 리소스의 핸들이다.

 lpResource = LockResource(hResData);
 // LoadResource 를 통해 메모리로 로드한 리소스의 시작 주소를 얻어온다.

 dwSize = SizeofResource(GetModuleHandle(0),hResource);
 // 리소스의 크기를 얻어온다

 hFile = CreateFile(TEXT("calc.exe"), GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
 // 리소스를 저장할 파일을 생성한다.

 WriteFile(hFile, lpResource, dwSize, &dwNumberOfBytes, NULL);
 // 파일에 메모리상의 리소스를 저장한다.

 CloseHandle(hFile);
 // 파일의 핸들을 닫아준다.
 
}


Posted by EXSO
,