• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

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

uk 2002-12-03 03:20:25
我做了一个动态库(MFC EXTENSION DLL),需要对里面String Table里的IDR_TEST的CAPTION项在外部直接修改,而且动态库不要重新编译!高手,请赐教!加分迅速!
...全文
120 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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,自己通过写程序怎么搞定?
回复
kingcom_xu 2002-12-03
用VC打开以资源方式打开它直接进行修改...
只有在NT\2000\XP下才能保存修改...因为在win9x下没有UpdateResource之类的API...

回复
staticip 2002-12-03
用vc就可以修改,vc打开文件有几种方式,有一种是resource方式,用这种打开方式打开dll文件,就可修改资源。
回复
approach 2002-12-03
http://count.skycn.com/download.php?id=2128&url=http://ln-down.skycn.net/down/ha_exescope630_fix_yy.zip
回复
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-12-03 03:20
社区公告

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