替换可执行文件图标的问题

yager11 2006-12-26 08:38:18
程序这样为什么改不了a的图标,只在运行的时候闪了一下。高手帮忙看看,顺便解释下FindResource第二个参数
#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow)
{
HINSTANCE hInst = LoadLibrary("D:\\b.exe");
HRSRC hRc = FindResource(hInst, (LPCSTR)1, (LPCSTR)RT_ICON);
LPVOID lpResource = LockResource(LoadResource(hInst,hRc));

HANDLE hUpdate = BeginUpdateResource("D:\\a.exe", FALSE);
UpdateResource(hUpdate, (LPCSTR)RT_ICON, (LPCSTR)1, 0, lpResource, SizeofResource(hInst, hRc));
EndUpdateResource(hUpdate, FALSE);

CloseHandle(hRc);
FreeLibrary(hInst);

return 0;
}
...全文
151 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CharlesPrince 2006-12-26
  • 打赏
  • 举报
回复
程序这样为什么改不了a的图标,只在运行的时候闪了一下?
答:你只是设置了程序在某一个时间中的图标,如果有一些处理要重新计算它,它就会恢复原有的图标。

加入循环来处理
改写程序地址中的数据。
或是改PE文件中资源节(一般是.rsrc)的应用程序的ICON的IMAGE_RESOURCE_DATA_ENTRY数据

顺便解释下FindResource第二个参数
MAKEINTRESOURCE宏来生成一个由资源的UINT ID号来算出的LPCSTR字串

算法为取出取输入ID号的低16位,输入一个DWORD变量中,它的高16位全为0,把它再转化为一个LPSTR,LPWSTR类型。


15,976

社区成员

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

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