替换应用程序exe图标,主要使用BeginUpdateResource,UpdateResource API函数

替换应用程序exe图标,主要使用的API函数是BeginUpdateResource(),UpdateResource(),EndUpdateResource()来使用自定义的ico文件类替换exe程序原来的图标。

[cpp] view plain copy

  1. // 第一个参数是将要替换图标的exe文件路径,第二个参数是替换的ico文件路径
  2. void ReplaceExeIco(LPCTSTR lpszApp, LPCTSTR lpszIco)
  3. {
  4. try
  5. {
  6. CFile file(lpszIco, CFile::modeRead);
  7. LONG lOffset = 0;
  8. DWORD dwSize = 0;
  9. DWORD dwBytes = 0;
  10. CONST BYTE bGroupIcoSize = 0x18;
  11. BYTE* lpGroupIco = new BYTE[bGroupIcoSize];
  12. memset(lpGroupIco, 0, bGroupIcoSize);
  13. file.Read(lpGroupIco, 0x06);
  14. file.Read(lpGroupIco+0x08, 0x0C);
  15. memcpy(&dwSize, lpGroupIco+0x10, sizeof(DWORD));
  16. file.Read(&lOffset, sizeof(lOffset));
  17. BYTE* lpRes = new BYTE[dwSize];
  18. memset(lpRes, 0, dwSize);
  19. file.Seek(lOffset, CFile::begin);
  20. file.Read(lpRes, dwSize);
  21. HANDLE hApp = BeginUpdateResource(lpszApp, NULL);
  22. UpdateResource(hApp, RT_GROUP_ICON, MAKEINTRESOURCE(1), 0, lpGroupIco, bGroupIcoSize);
  23. UpdateResource(hApp, RT_ICON, MAKEINTRESOURCE(1), 0, lpRes, dwSize);
  24. EndUpdateResource(hApp, FALSE);
  25. delete[] lpRes;
  26. delete[] lpGroupIco;
  27. file.Close();
  28. }
  29. catch (CException* e)
  30. {
  31. e->ReportError();
  32. e->Delete();
  33. }
  34. }
  35. //调用方法很简单,例如下面这样就可以了
  36. ReplaceExeIco(_T("F://11.exe"), _T("F://11.ico"));

http://blog.csdn.net/visualeleven/article/details/5754831

时间: 2024-10-10 04:05:28

替换应用程序exe图标,主要使用BeginUpdateResource,UpdateResource API函数的相关文章

软件看门狗--别让你地程序无响应(使用未公开API函数IsHungAppWindow,知识点较全)

正文一.概述一些重要的程序,必须让它一直跑着:而且还要时时关心它的状态——不能让它出现死锁现象.当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误.我们首要做的事是,把这个Bug揪出来.但如果时间紧迫,这个Bug又“飘忽不定”,那么,我们还是先写一个软件“看门狗”,暂时应一下急吧. “看门狗”的需求描述:“看门狗”的运行不出现界面窗口,具有一定的隐蔽性:定时判断目标进程是否运行在当前系统中,如果没有则启动目标进程:判断目标进程是否“没有响应”,如果是则终止目标进程:如果目标进程“没有响应

(转)Inno Setup入门(十四)——替换安装程序和卸载程序的图标

本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250937 通常Inno生成的安装文件的图标是一个光盘和显示器,如下图.同时,程序安装好之后,在安装目录下的卸载程序的图标也是一样的,其实我们也可以自己修改. 首先生成的安装文件图标.这个比较简单,只需要在Setup段中添加相应的语句即可: SetupIconFile=jiong.ico 该语句指定了输出文件的图标,注意如果图标不是和脚本在同一目录下的话,需要提供

Innosetup打包自动下载.net framework 动态库及替换卸载程序图标.

背景     在使用了一段时间微软自带的安装包打包工具后,总感觉不太顺利,于是便想着找一种更简单稳定的打包工具,这类工具其实还不少,最终经过各种考量,我们选择了 InnoSetup ,该工具是一个完全免费的Windows打包工具,涉及的功能比较全面,并且采用脚本式编辑,完美支持 Pascal 语言.本文简单描述一下如何自动下载安装 .net framework 框架 及更新卸图标的小技巧,当然本文部分内容借鉴了网上一部分的解决方案.在此整理一下已备忘同时分享给有类似需求的朋友. 放几张安装过程中

electron教程(四): 使用electron-builder或electron-packager将项目打包为可执行桌面程序(.exe)

我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(二): http服务器, ws服务器, 子进程管理 electron教程(三): 使用ffi-napi引入C++的dll electron教程(四): 使用electron-builder或electron-packager将项目打包为可执行桌面程序(.exe) ? 引言 本篇将介绍如何将你开发的electron项目(main.js), 打包成一个可执行桌面程序(.exe). 有

在Axure中使用FontAwesome替换你的网站图标[axure小技巧]

你是不是还在为你的网站做一个很小的图标而忙碌着?你是不是还在为找一个图标导出百度或者谷歌?你有没有想过可以用字体来做一个图标代替普通的图片图标?这两天给公司做案例,由于自己又对设计不熟悉,寻找图标的苦差可不是很好做.同事分享了一个用字体代替图片做网站图标的资源,在此非常感谢!Font Awesome,原只为Bootstrap而设计的字体图标,不过,现在你可以单独用它来为你的网站工作.丢掉图片图标吧,跟我一起来用Font Awesome. 使用方法: 1. 下载 Font Awesome 官方网站

Delph控制台(Console)程序添加图标和版权信息

Delphi创建控制台(Console)程序默认是无法添加图标和版权的.经过仔细的对比窗体程序与控制台程序源码,发现窗体程序的工程文中,在uses结束begin开始的地方有一句如下代码:{$R *.res}而控制台程序的工程文件里是没有这句代码的.于是,我就在想是不是我在控制台程序的工程文件里加上如上代码,我们就可以更改图标和添加版权了,说做就开始做,加上如上代码,然后保存,Delphi会自动生成资源文件,如下图:本以为可以就可以编辑图标和版权了,结果发现,版权是可以修改了,但是图标还是无法修改

XINU安装程序.exe一键配置好XINU实验环境 - imsoft.cnblogs

  还在一步一步配置复杂的XINU吗?XINU安装程序.exe一键配置好XINU实验环境. XINU安装程序.exe使用说明: 本程序配合<网络协议分析与实现>/(胡维华等编著)课本使用 本程序会自动解压安装配置好的XINU系统(包含XINU和VPC文件夹)到D盘根目录 解压此程序后,用VPC2007虚拟机软件打开或者导入即可. 附件还包含一系列使用时需要用到的程序,以及笔者自己根据使用需求建立的快捷使用方法. 推荐直接下载:VPC 2007 精简版.exe,XINU安装程序.exe,XINU

关于VC6.0++执行时会程序exe会出现已停止问题。

写一段代码时,写完后成功完成编译,并执行.但是出现程序exe会出现已停止的问题. 在以前也出现同样的问题,但是并没有发现是何原因.但是发现这次的出现问题的原因所在. 在scanf语句中,漏掉了&,但是依旧编译成功了,导致了问题所在. 在添加了&后,问题没有出现,成功解决!

C++ C++ 控制台程序 设置图标

. 实现过程 创建1个控制台程序. 新建1个 Resource Script文件 #include "stdio.h" #include <windows.h> #include <tchar.h> #include "resource.h" typedef HWND (WINAPI * GETCONSOLEPROC)(); HWND GetConsole() { HWND hRet(NULL); BOOL bLoad(FALSE); HMO