替换应用程序exe图标,主要使用BeginUpdateResource,UpdateResource API函数
2024-10-05 05:55:14
替换应用程序exe图标,主要使用的API函数是BeginUpdateResource(),UpdateResource(),EndUpdateResource()来使用自定义的ico文件类替换exe程序原来的图标。
- // 第一个参数是将要替换图标的exe文件路径,第二个参数是替换的ico文件路径
- void ReplaceExeIco(LPCTSTR lpszApp, LPCTSTR lpszIco)
- {
- try
- {
- CFile file(lpszIco, CFile::modeRead);
- LONG lOffset = 0;
- DWORD dwSize = 0;
- DWORD dwBytes = 0;
- CONST BYTE bGroupIcoSize = 0x18;
- BYTE* lpGroupIco = new BYTE[bGroupIcoSize];
- memset(lpGroupIco, 0, bGroupIcoSize);
- file.Read(lpGroupIco, 0x06);
- file.Read(lpGroupIco+0x08, 0x0C);
- memcpy(&dwSize, lpGroupIco+0x10, sizeof(DWORD));
- file.Read(&lOffset, sizeof(lOffset));
- BYTE* lpRes = new BYTE[dwSize];
- memset(lpRes, 0, dwSize);
- file.Seek(lOffset, CFile::begin);
- file.Read(lpRes, dwSize);
- HANDLE hApp = BeginUpdateResource(lpszApp, NULL);
- UpdateResource(hApp, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, lpGroupIco, bGroupIcoSize);
- UpdateResource(hApp, RT_ICON, MAKEINTRESOURCE(1), 0, lpRes, dwSize);
- EndUpdateResource(hApp, FALSE);
- delete[] lpRes;
- delete[] lpGroupIco;
- file.Close();
- }
- catch (CException* e)
- {
- e->ReportError();
- e->Delete();
- }
- }
- //调用方法很简单,例如下面这样就可以了
- ReplaceExeIco(_T("F://11.exe"), _T("F://11.ico"));
http://blog.csdn.net/visualeleven/article/details/5754831
最新文章
- 点击div 跳转并通过URL传参
- 不使用session,借助redis实现验证码
- spring中用到哪些设计模式
- 34款Firefox渗透测试插件工具
- HTML5新特性及详解
- Hibernate中的组合映射
- CCOrbitCamera卡牌翻转效果
- Python编程规范及性能优化(转载)
- 网络流相关(拓扑)CodeForces 269C:Flawed Flow
- 第三篇:GPU 并行编程的运算架构
- web应用怎么跳过某些Filter
- SpringMVC整合Thymeleaf3
- jQuery插件学习之选项卡Tab
- abap test msg
- 学Java的18天,今天老师讲构造方法;
- if-else练习
- Lua游戏开发参考资料收集
- hive 配置元数据以mysql 存储
- Linux 的启动流程--转
- SpringMVC请求参数接收总结