Aktualisieren von Ressourcen

Das folgende Beispiel kopiert eine Dialogfeldressource aus einer ausführbaren Datei, HAND.EXE, zum anderen Fuß.EXE, indem Sie die folgenden Schritte:

  1. Verwendung der Funktion LoadLibrary zum Laden der ausführbaren Datei HAND.EXE.
  2. Verwenden Sie die FindResource und LoadResource Funktionen zum Suchen und laden die Dialogfeldressource.
  3. Verwenden Sie die LockResource -Funktion, um einen Zeiger auf das Dialogfeld im Feld Ressourcendaten abrufen.
  4. Verwenden Sie die BeginUpdateResource -Funktion, um einen Update-Handle zu Fuß zu öffnen.EXE.
  5. Verwenden Sie die UpdateResource -Funktion, um die Dialogfeldressource von HAND kopieren.EXE zu Fuß.EXE.
  6. Verwenden Sie die EndUpdateResource -Funktion, um die Aktualisierung abzuschließen.

Der folgende Code implementiert diese Schritte.

HRSRC hResLoad;     / / handle für geladene Ressource HANDLE hExe;        / / handle auf bestehende.EXE-Datei HRSRC hRes;         / / Handle/Ptr. res.-info. in hExe HANDLE hUpdateRes;  / / update Ressource Handle Char * LpResLock;    / / Zeiger auf Resource Daten BOOL Ergebnis; 
 
/ / Lade die.EXE-Datei, die im Dialogfeld enthält, die Sie kopieren möchten. 
hExe = LoadLibrary("hand.exe"); 
 
Wenn (hExe == NULL) {ErrorHandler ("Could not load Exe."); 
} / / Suchen Sie die Dialogfeldressource in der.EXE-Datei. 
hRes = FindResource (hExe, "AboutBox", RT_DIALOG); 
 
Wenn (hRes == NULL) {ErrorHandler ("konnte nicht gefunden im Dialogfeld werden."); 
} / / Das Dialogfeld in globalen Speicher laden. 
hResLoad = LoadResource (hExe, hRes); 
 
Wenn (hResLoad == NULL) {ErrorHandler ("Could not load Dialogfeld."); 
} / / Das Dialogfeld in globalen Speicher sperren. 
LpResLock = LockResource(hRes); 
 
Wenn (LpResLock == NULL) {ErrorHandler ("konnte keine Sperre Dialogfeld."); 
} / / Öffnen Sie die Datei, die Sie die Dialogfeldressource hinzufügen möchten. 
hUpdateRes = BeginUpdateResource ("foot.exe", FALSE); 
 
Wenn (hUpdateRes == NULL) {ErrorHandler ("konnte Datei nicht geöffnet zum Schreiben."); 
} / / Die Dialogfeldressource zur Updateliste hinzufügen. 
Ergebnis = UpdateResource (hUpdateRes, / / Ressource handle RT_DIALOG, / / Änderung der Dialogfeldressource "AboutBox", / / Dialogfeld name MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), / / neutrale Sprache
     LpResLock, / / Ptr Ressource Info SizeofResource (hExe, hRes)); / / Größe der Ressource Info. 
 
Wenn (Ergebnis == FALSE) {ErrorHandler ("könnte nicht hinzufügen Ressource."); 
} / / Write-Änderungen zu Fuß.EXE und schließen Sie es dann. 
If (!.EndUpdateResource (hUpdateRes, FALSE)) {ErrorHandler ("konnte nicht schreiben Änderungen an der Datei."); 
} / / Clean up. 
If (!.FreeLibrary(hExe)) {ErrorHandler ("konnte nicht kostenlose ausführbare Datei."); 
}