更新资源

【勇芳软件工作室】汉化HomePreviousNext

以下示例将对话框资源从一个可执行文件HAND.EXE复制到另一个FOOT.EXE,步骤如下:

1.LoadLibrary函数加载可执行文件HAND.EXE。

2.FindResourceLoadResource功能从文件中找到并加载名为“If”的对话框资源。

3.LockResource函数返回一个指向对话框资源数据的指针。

4.BeginUpdateResource功能打开一个更新句柄FOOT.EXE。

5.UpdateResource功能将对话框资源从HAND.EXE复制到FOOT.EXE。

6.EndUpdateResource功能完成更新。

以下代码实现这些步骤。

HRSRC hResLoad; //处理加载的资源

HANDLE hExe; //处理现有的.EXE文件

HRSRC hRes; //手柄/ PTR。到res信息。在女巫

HANDLE hUpdateRes; //更新资源句柄

char *lpResLock; //指向资源数据的指针

BOOL result;

//加载包含您要复制的对话框的.EXE文件。

hExe = LoadLibrary("hand.exe");

if (hExe == NULL) {

ErrorHandler("Could not load exe.");

}

//找到.EXE文件中的对话框资源。

hRes = FindResource(hExe, "AboutBox", RT_DIALOG);

if (hRes == NULL) {

ErrorHandler("Could not locate dialog box.");

}

//将对话框加载到全局内存中。

hResLoad = LoadResource(hExe, hRes);

if (hResLoad == NULL) {

ErrorHandler("Could not load dialog box.");

}

//将对话框锁定到全局内存中。

lpResLock = LockResource(hRes);

if (lpResLock == NULL) {

ErrorHandler("Could not lock dialog box.");

}

//打开要添加对话框资源的文件。

hUpdateRes = BeginUpdateResource("foot.exe", FALSE);

if (hUpdateRes == NULL) {

ErrorHandler("Could not open file for writing.");

}

//将对话框资源添加到更新列表。

result = UpdateResource(hUpdateRes, //更新资源句柄

RT_DIALOG, //更改对话框资源

"AboutBox", //对话框名称

MAKELANGID(LANG_NEUTRAL,

SUBLANG_NEUTRAL), //中立语言ID

lpResLock, // PTR资源信息

SizeofResource(hExe, hRes)); //资源信息大小

if (result == FALSE) {

ErrorHandler("Could not add resource.");

}

//将更改写入FOOT.EXE,然后关闭它。

if(!EndUpdateResource(hUpdateRes,FALSE)){

ErrorHandler("Could not write changes to file.");

}

// 清理。

if(!FreeLibrary(hExe)){en

ErrorHandler("Could not free executable.");

}