100分!!!如何才能动态修改DLL里的资源(不要重新编译)?

uk 2002-12-03 03:20:25
我做了一个动态库(MFC EXTENSION DLL),需要对里面String Table里的IDR_TEST的CAPTION项在外部直接修改,而且动态库不要重新编译!高手,请赐教!加分迅速!
...全文
237 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nustchenhf 2002-12-04
  • 打赏
  • 举报
回复
msdn里面的例子,看一下,会有主意的。
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
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.");
}
uk 2002-12-04
  • 打赏
  • 举报
回复
up
uk 2002-12-04
  • 打赏
  • 举报
回复
approach() ,你介绍的东东正是我想要的,但能告诉我他的具体实现方法吗?谢谢!
uk 2002-12-04
  • 打赏
  • 举报
回复
谢谢各位,请到相关的帖子一看:http://expert.csdn.net/Expert/topicview1.asp?id=1230739
staticip 2002-12-03
  • 打赏
  • 举报
回复
用BeginUpdateResource\UpdateResource\EndUpdateResource直接搞定,不过只能在nt/2000/xp下使用。参考msdn
hhuangchunlin 2002-12-03
  • 打赏
  • 举报
回复
GZ
uk 2002-12-03
  • 打赏
  • 举报
回复
如果不用VC,自己通过写程序怎么搞定?
staticip 2002-12-03
  • 打赏
  • 举报
回复
用vc就可以修改,vc打开文件有几种方式,有一种是resource方式,用这种打开方式打开dll文件,就可修改资源。
kingcom_xu 2002-12-03
  • 打赏
  • 举报
回复
用VC打开以资源方式打开它直接进行修改...
只有在NT\2000\XP下才能保存修改...因为在win9x下没有UpdateResource之类的API...

approach 2002-12-03
  • 打赏
  • 举报
回复
http://count.skycn.com/download.php?id=2128&url=http://ln-down.skycn.net/down/ha_exescope630_fix_yy.zip

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧