VC里面可以动态修改自定义资源吗/ 如何修改?

Ericbuf 2008-08-25 09:23:41
我在VC里面加了个自定义资源, 现在可以访问,并且可以向外写数据,不过怎么才能动态的修改这个资源里面的内容呢?
就是我做个界面,从截面里面读进去内容写到这个自定义资源里面去
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2008-08-25
  • 打赏
  • 举报
回复
BeginUpdateResource
UpdateResource
EndUpdateResource
不要把资源放在当前已加载的模块中,比如EXE,应该放在一个独立的DLL或EXE中
cnzdgs 2008-08-25
  • 打赏
  • 举报
回复
CString ss("hello");
LPVOID lpResource = (LPVOID)ss.GetBuffer(0);
DWORD length = (DWORD)ss.GetLength();
hUpdate = BeginUpdateResource("test.exe", false);
UpdateResource(hUpdate,
_T("EXE"),
(LPCSTR)IDR_EXE2,
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
lpResource,
length);
EndUpdateResource(hUpdate, false);
Ericbuf 2008-08-25
  • 打赏
  • 举报
回复
假如我在一个test.exe里面添加了个EXE类型的IDR_EXE2的二进制文件,我现在想通过action.exe
文件修改这个二进制文件,
CString ss("hello");
LPVOID lpResource;
lpResource = &ss;
hUpdate = BeginUpdateResource("test.exe", false);
UpdateResource(hUpdate,
(LPCSTR)EXE,
(LPCSTR)2,
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
lpResource,
这里应该如何写呢?);
EndUpdateResource(hUpdate, false);
我查了下MSDN,有点看不明白,请教大哥
jameshooo 2008-08-25
  • 打赏
  • 举报
回复
FindResource的第一个参数换成外面exe文件模块的句柄即可
Ericbuf 2008-08-25
  • 打赏
  • 举报
回复
读自己的资源文件可以这样
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_MyType6), TEXT("MyType"));
if (NULL == hRsrc)
return FALSE;
//获取资源的大小
DWORD dwSize = SizeofResource(NULL, hRsrc);

if (0 == dwSize)
return FALSE;
//加载资源
HGLOBAL hGlobal = LoadResource(NULL, hRsrc);
if (NULL == hGlobal)
return FALSE;
//锁定资源
LPVOID pBuffer = LockResource(hGlobal);
if (NULL == pBuffer)
return FALSE;
那读外面exe里面的资源文件要如何读取呢 谢谢赐教
Ericbuf 2008-08-25
  • 打赏
  • 举报
回复
有具体的实现代码吗? 读外面的exe文件怎么读取?
cnzdgs 2008-08-25
  • 打赏
  • 举报
回复
程序不能修改自身模块文件,可以把资源作成独立的文件。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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