자원 업데이트

다음 예제에서는 하나의 실행 파일을 손에서 대화 상자 리소스를 복사 합니다.EXE, 다른 발입니다.다음이 단계를 수행 하 여 EXE:

  1. 사용 된 손을 실행 파일을 로드 하려면 LoadLibrary 함수.EXE.
  2. FindResourceLoadResource 함수를 찾아 대화 상자 리소스 로드를 사용 하 여.
  3. LockResource 함수를 사용 하 여 대화 상자 리소스 데이터에 대 한 포인터를 검색 합니다.
  4. BeginUpdateResource 함수를 사용 하 여 발을 업데이트 핸들을 열 수 있습니다.EXE.
  5. UpdateResource 함수를 사용 하 여 손에서 대화 상자 리소스를 복사 합니다.EXE를 발입니다.EXE.
  6. EndUpdateResource 함수를 사용 하 여 업데이트를 완료 하려면.

다음 코드는 이러한 단계를 구현.

HRSRC hResLoad;     / / 로드 된 리소스 핸들 hExe;에 대 한 핸들        / / 기존 처리 합니다.EXE 파일 HRSRC hRes;         / / 핸들/ptr. res. 정보. hExe 처리 hUpdateRes;  / / 업데이트 리소스 핸들 char * lpResLock;    / / 포인터 리소스 데이터 BOOL 결과; 
 
/ / 로드 합니다.복사 대화 상자를 포함 하는 EXE 파일. 
hExe = LoadLibrary("hand.exe"); 
 
경우 (hExe = = NULL) {ErrorHandler ("로드할 수 없습니다 exe."); 
} / / 대화 상자 리소스에서 찾을 합니다.EXE 파일입니다. 
hRes FindResource (hExe, "AboutBox", RT_DIALOG); = 
 
경우 (hRes = = NULL) {ErrorHandler ("찾을 수 없습니다 대화 상자."); 
} / / 글로벌 메모리에 대화 상자를 로드 합니다. 
hResLoad = LoadResource (hExe, hRes); 
 
경우 (hResLoad = = NULL) {ErrorHandler ("로드할 수 없습니다 대화 상자."); 
} / / 글로벌 메모리에 대화 상자를 잠금. 
lpResLock = LockResource(hRes); 
 
경우 (lpResLock = = NULL) {ErrorHandler ("수 없는 잠금 대화 상자."); 
} / / 대화 상자 리소스를 추가할 파일을 엽니다. 
hUpdateRes = BeginUpdateResource ("foot.exe", FALSE); 
 
경우 (hUpdateRes = = NULL) {ErrorHandler ("열 수 없습니다 쓰기 파일."); 
} / / 업데이트 목록에 대화 상자 리소스를 추가 합니다. 
결과 = UpdateResource (hUpdateRes, / 업데이트 리소스 처리 RT_DIALOG, / / / 변경 대화 상자 리소스 "AboutBox" / / 대화 상자 이름 MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL) / / 중립 언어
     lpResLock, / / ptr 리소스 정보 SizeofResource (hExe, hRes)); / / 자원 정보의 크기. 
 
만약 (결과 = FALSE) {ErrorHandler ("추가 하지 못했습니다 리소스."); 
} / / 발에 변경 내용을 기록 합니다.EXE 한 다음 닫습니다. 
if (!.EndUpdateResource (hUpdateRes, FALSE)) {ErrorHandler ("쓸 수 없습니다 파일을 변경 합니다."); 
} / / 정리 합니다. 
if (!.FreeLibrary(hExe)) {ErrorHandler ("수 없는 무료 실행."); 
} 
 

 

Index