Actualizarea resurse

Următorul exemplu copiază o resursă de caseta de dialog dintr-un fișier executabil, mână.EXE, la altul, febrei.EXE, urmând acești pași:

  1. Utilizarea LoadLibrary funcție pentru a încărca fișierul executabil mână.EXE.
  2. Se utilizează funcțiile FindResource și LoadResource pentru a localiza și de resurse de caseta de dialog de încărcare.
  3. Utilizați funcția LockResource pentru a prelua un pointer la caseta de dialog resurse datele.
  4. Utilizați funcția BeginUpdateResource pentru a deschide un mâner de actualizare la picior.EXE.
  5. Utilizați funcția UpdateResource pentru a copia resursa caseta de dialog din mână.EXE la picior.EXE.
  6. Utilizați funcția EndUpdateResource pentru a finaliza update.

Pune în aplicare următoarele codul acești pași.

HRSRC hResLoad;     / / ocupa de resurse încărcate MÂNER cu Silversurfer;        / / ocupa existente.EXE dosar HRSRC hRes;         / / mâner/ptr. res. info. în hUpdateRes MÂNER cu Silversurfer;  / / update resurse mâner char * lpResLock;    / / indicatorul resurse date BOOL rezultat; 
 
/ / Încărca.EXE dosar care conține caseta de dialog doriți să copiați. 
cu Silversurfer = LoadLibrary("hand.exe"); 
 
Dacă (cu Silversurfer == NULL) {ErrorHandler ("nu poate încărca exe."); 
} / / Localiza caseta de dialog resursa în.EXE dosar. 
hRes = FindResource cu (Silversurfer, "AboutBox", RT_DIALOG); 
 
Dacă (hRes == NULL) {ErrorHandler ("ar putea nu localiza caseta de dialog."); 
} / / Caseta de dialog de încărcare în memoria globală. 
hResLoad = LoadResource (cu Silversurfer, hRes); 
 
Dacă (hResLoad == NULL) {ErrorHandler ("nu poate încărca caseta de dialog."); 
} / / Blocare în caseta de dialog în memoria globală. 
lpResLock = LockResource(hRes); 
 
Dacă (lpResLock == NULL) {ErrorHandler ("puteau nu blocare caseta de dialog."); 
} / / Deschide fișierul la care doriți să adăugați resursa caseta de dialog. 
hUpdateRes = BeginUpdateResource ("foot.exe", FALSE); 
 
Dacă (hUpdateRes == NULL) {ErrorHandler ("nu deschide fișierul pentru scris."); 
} / / Resurse de caseta de dialog se adaugă la lista de actualizare. 
rezultatul = UpdateResource (hUpdateRes, / / resurse update ocupa RT_DIALOG, / / schimba dialog caseta de resurse "AboutBox", / / caseta de dialog nume MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), / / neutru limba
     lpResLock, / / ptr resurse info SizeofResource (cu Silversurfer, hRes)); / / dimensiune de informații de resurse. 
 
Dacă (rezultatul == fals) {ErrorHandler ("ar putea nu adăuga resurse."); 
} / / Scrie modificări la picior.EXE și apoi închideți-l. 
if (!.EndUpdateResource (hUpdateRes, FALSE)) {ErrorHandler ("nu poate scrie modificări la fișier."); 
} / / Curat până. 
if (!.FreeLibrary(hExe)) {ErrorHandler ("ar putea nu drum liber executabil."); 
}