Updating Resources
The following example copies a dialog box resource from one executable file,
HAND.EXE, to another, FOOT.EXE, by following these steps:
- The LoadLibrary function loads the executable file HAND.EXE.
- The FindResource and LoadResource functions locate and load the dialog box resource named If from the file.
- The LockResource function returns a pointer to the dialog box resource data.
- The BeginUpdateResource function opens an update handle FOOT.EXE.
- The UpdateResource function copies the dialog box resource from HAND.EXE to FOOT.EXE.
- The EndUpdateResource function completes the update.
The following code implements these steps.
HRSRC hResLoad; // handle to loaded resource
HANDLE hExe; // handle to existing .EXE file
HRSRC hRes; // handle/ptr. to res. info. in hExe
HANDLE hUpdateRes; // update resource handle
char *lpResLock; // pointer to resource data
BOOL result;
// Load the .EXE file that contains the dialog box you want to copy.
hExe = LoadLibrary("hand.exe");
if (hExe == NULL) {
ErrorHandler("Could not load exe.");
}
// Locate the dialog box resource in the .EXE file.
hRes = FindResource(hExe, "AboutBox", RT_DIALOG);
if (hRes == NULL) {
ErrorHandler("Could not locate dialog box.");
}
// Load the dialog box into global memory.
hResLoad = LoadResource(hExe, hRes);
if (hResLoad == NULL) {
ErrorHandler("Could not load dialog box.");
}
// Lock the dialog box into global memory.
lpResLock = LockResource(hRes);
if (lpResLock == NULL) {
ErrorHandler("Could not lock dialog box.");
}
// Open the file to which you want to add the dialog box resource.
hUpdateRes = BeginUpdateResource("foot.exe", FALSE);
if (hUpdateRes == NULL) {
ErrorHandler("Could not open file for writing.");
}
// Add the dialog box resource to the update list.
result = UpdateResource(hUpdateRes, // update resource handle
RT_DIALOG, // change dialog box resource
"AboutBox", // dialog box name
MAKELANGID(LANG_NEUTRAL,
SUBLANG_NEUTRAL), // neutral language ID
lpResLock, // ptr to resource info
SizeofResource(hExe, hRes)); // size of resource info.
if (result == FALSE) {
ErrorHandler("Could not add resource.");
}
// Write changes to FOOT.EXE and then close it.
if (!EndUpdateResource(hUpdateRes, FALSE)) {
ErrorHandler("Could not write changes to file.");
}
// Clean up.
if (!FreeLibrary(hExe)) {
ErrorHandler("Could not free executable.");
}
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database