2010-03-04 4 views
3

Visual C++ 2008로 파일을 래핑 중입니다.이 파일을 포함하는 방법을 알아 냈습니다. 그러나이를 검색하는 방법을 알 수 없습니다. 나는 C++ 경험이 있지만 Win32 나 Visual C++는 없다. 랩핑의 목적은 일부 코드를 실행 한 다음 모든 것이 정상이면 임베디드 파일을 실행할 수 있습니다.exe에서 리소스 파일 가져 오기

많은 다른 파일을 래핑하므로 코드 재사용이 중요하며 모든 경우에 포함 된 파일의 이름을 알 수 없습니다. 그러나 나는 프로그램을 wrapped 파일과 같은 이름으로 지정할 수 있기 때문에 프로그램이 작동하는 자체의 이름을 얻을 수있다.

일부 랩핑 된 파일은 exes이며 다른 파일은 외부 프로그램에서 실행되는 파일입니다.

편집 :이 파일은 .res 파일로 포함되며 exe 끝에 연결되지 않습니다.

답변

5

그래서 EXE 파일에 이진 파일이 리소스로 포함되어 있고이 파일을 읽으려고합니까?

은 (매우 거친 적절한 매개 변수에 대한 MSDN에 기능을 찾아 볼) 같은 것을보십시오 :

HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(id), type); 
HGLOBAL hGlobal = LoadResource(NULL, hResource); 
BYTE* pData = (BYTE*)LockResource(hGlobal); 
int size = SizeofResource(NULL, hResource); 
// ... do something with pData and size, eg write to disk ... 
FreeResource(hGlobal); // done with data 

당신은 그에 어떤 에러 체크를 추가 할 수 있습니다!

+1

가변 용도를 수정해야 할 수 있습니다. theResource-> hResource, theData-> hGlobal ... – Bahbar

+0

다른 응용 프로그램을 너무 빨리 복사하여 붙여 넣기 위해 얻은 것입니다. 고정 ... – AshleysBrain

+0

첫 번째 줄에는 "test.exe"로 ID가 있고 유형은 RT_RCDATA입니다. 그것은 컴파일하지만 디버거에 따라 hResource는 null입니다. 나는 무엇이 잘못되었는지 확신하지 못합니다 ... – jonescb

0

.res 파일로 컴파일 된 .RC 파일에 있어야하는 주요 사항은 리소스 이름입니다. 그런 다음 FindResourceLoadResource을 사용하여 데이터를로드 할 수 있습니다. 당신은 분명히 그 데이터를 임시 파일에 쓰고 그 파일을 실행할 것입니다.