从EXE或DLL等中取ICO

exe(dll)和ICON文件中的图标结构格式 一、.ico文件中图标的保存格式   对于一个扩展名是.ico的文件,大部分人会认为一个ICO文件里面只能包含一个图标。但事实上,一个ICO文件里面可以包含很多图标。而且,目前大部分ICO文件里面都包含有不同尺寸、不同色深的好几个图标。我们以MSN安装包里的msnmsn.ico为例,这个图标文件就包含了9个不同尺寸、不同色深的图标,如图所示:图表 1 msnms.ico  这样做的目的,是为了保证 阅读详情
当你想要使用别的应用程序中的漂亮图标时,该怎么办呢?也许就会用到一些图标提取工具吧!那么,你知道它们是怎么实现的,想不想自己动手也做一个适合自己的图标提取工具呢?下面,就让我用我以前做过的一个工具<轻轻松松抓图标>来告诉你吧!它可以提取各种文件中的图标资源,并可将其保存为图标(ICO)、位图(BMP)两种格式。程序运行后界面如下:
 
 
图一
在上面的例程中,我整合出一个图标类CIcons和与之相配的一个位图类CDib,其中包括Icons.h、Icons.cpp、Dib.h和Dib.cpp四个文件。在你的工程中直接加入这四个文件后,调用其类涵数,既可做出你自己的图标工具来。
下面让我们来看看如何来具体用它们来实现:
1、 提取并显示出图标到左侧列表框中。
代码实现如下:
//读取各种资源内部图标并显示在左侧列表框中
 
 
void CIconSnapDlg::OnOK() 
{	
	CFileDialog fileDialog( TRUE,"*.ICO",NULL,NULL,"资源文件(*.ICO,*.BMP,*.EXE,*.DLL,*.ICL)|*.ICO;*.BMP;*.EXE;*.DLL;*.ICL||");
	if (fileDialog.DoModal() == IDOK) 
	{		
		szOpenFileName=fileDialog.GetPathName();	
        szOpenFileExtName= fileDialog.GetFileExt ();
		szOpenFileExtName.MakeLower ();

		m_List.ResetContent (); //选清空左侧图标列表框

		//读取并显示ICON文件
        if(szOpenFileExtName =="ico") 
		{
			lpIR=pIcons->ReadIconFromICOFile (szOpenFileName);		
			HICON hIcon;
			hIcon=ExtractIcon(AfxGetInstanceHandle(),szOpenFileName,0);
            if(hIcon!=NULL)
				m_List.AddString (szOpenFileName);
			CStatic* pStatic = (CStatic*) GetDlgItem(IDC_ICONS);
	        pStatic->SetIcon (hIcon);
		}
		else if(szOpenFileExtName == "bmp") //读取并显示BMP文件
		{
            pIcons->IconImageFromBMPFile (szOpenFileName,&lpIR->IconImages[0],TRUE);
			HICON hIcon;
			hIcon=pIcons->MakeIconFromResource (&lpIR->IconImages [0]);
			if(hIcon!=NULL) 
				m_List.AddString (szOpenFileName);
            CStatic* pStatic = (CStatic*) GetDlgItem(IDC_ICONS);
	        pStatic->SetIcon (hIcon);
		}
        else //读取并显示EXE、DLL等资源文件
		{
		   HINSTANCE  hLibrary;

		   // Load the DLL/EXE - NOTE: must be a 32bit EXE/DLL for this to work
		   if( (hLibrary = LoadLibraryEx( szOpenFileName, NULL, LOAD_LIBRARY_AS_DATAFILE )) == NULL )
		   {
		 	// Failed to load - abort
			MessageBox( szOpenFileName+ "文件载入错误,必须是WIN32的文件!", "错误", MB_OK );
			return;
		   }
	    	// Store the info
		   EDII.szFileName =szOpenFileName;
		   EDII.hInstance = hLibrary;
	    
		   // Fill in the listbox with the icons available
		   if( ! EnumResourceNames( EDII.hInstance, RT_GROUP_ICON, (ENUMRESNAMEPROC )MyEnumProcedure, (LPARAM)GetSafeHwnd()) )
		   {
			MessageBox( "列举图标资源名时出错!", "错误", MB_OK );
			return;
		   }
		}

		m_List.SetCurSel (0);
		if( m_List.GetCount()  == 0 )
		{
			MessageBox( "此文件中没有图标资源!", "错误", MB_OK );
			//无图标资源,置保存和复制按钮为无效状态
			m_Copy.EnableWindow (false);
			m_SaveAs.EnableWindow (false);
			return;
		}
        //有图标资源,置保存和复制按钮为有效状态
		m_Copy.EnableWindow (true);
		m_SaveAs.EnableWindow (true);

		//刷新调用OnPaint来显示图标
		InvalidateRect(NULL,TRUE);
	}	
}     
      
在OnPaint()涵数中加入下面代码用来具体显示提取出的图标或位图资源。
//根据左侧图标列表,利用OnPaint()来更新右侧相应图标
 
 
	
LPTSTR lpIconID;
HICON hIcon;
if((lpIconID=(LPTSTR)m_List.GetItemData(m_List.GetCurSel()))!=(LPTSTR)LB_ERR )
{
 	if(szOpenFileExtName=="exe"||szOpenFileExtName=="dll"||szOpenFileExtName=="icl")
	{
   	     hIcon=pIcons->GetIconFromInstance(EDII.hInstance,lpIconID);
	     CStatic* pStatic = (CStatic*) GetDlgItem(IDC_ICONS);
	     pStatic->SetIcon (hIcon);
	}
}     
      
2、 如何将提取出的图标资源保存为Ico或Bmp格式。
//保存图标资源为ICO或BMP格式文件
 
 
void CIconSnapDlg::OnButtonSaveas() 
{
	LPTSTR lpIconID;

  	CFileDialog fileDialog( FALSE,"*.ICO",NULL,NULL,"图标文件(*.ICO)|*.ICO|位图文件(*.BMP)|*.BMP||");
	if (fileDialog.DoModal() == IDOK) 
	{
		szSaveFileName=fileDialog.GetPathName();	
	        szSaveFileExtName= fileDialog.GetFileExt ();
		szSaveFileExtName.MakeLower ();

		if(szOpenFileExtName=="exe"||szOpenFileExtName=="dll"||szOpenFileExtName=="icl")
	        	   if((lpIconID=(LPTSTR)m_List.GetItemData (m_List.GetCurSel()))!= (LPTSTR)LB_ERR)
		    	lpIR=pIcons->ReadIconFromEXEFile (szOpenFileName,lpIconID);
	        	if(szSaveFileExtName=="bmp")
		{
		  if(lpIR!=NULL && m_List.GetCount ()>0)
		  {
			BeginWaitCursor();
			pIcons->IconImageToBMPFile (szSaveFileName,&lpIR->IconImages [0]);
			EndWaitCursor();
		  }
		  else
            		MessageBox( "没有可保存的图标资源!", "错误", MB_OK );
		}
		else if(szSaveFileExtName=="ico")
		{
	          if(lpIR!=NULL && m_List.GetCount ()>0)
		  {
			BeginWaitCursor();
			pIcons->WriteIconToICOFile (lpIR,szSaveFileName);
			EndWaitCursor();
		  }
		  else
        			MessageBox( "没有可保存的图标资源!", "错误", MB_OK );
		}
	}
}
exe图标自定义指南 - 从提取到替换的一站式解决方案(ico/png双格式支持) 本文提供了一份详尽的EXE图标自定义指南,涵盖从提取到替换的全流程。重点介绍了使用Quick Any2Ico作为图标提取器和Resource Hacker作为图标修改器的工具链,并详细演示了如何将第三方软件图标替换为系统原生图标。指南支持ICO和PNG双格式,强调操作前的文件备份与修改后的图标缓存清理,旨在帮助用户轻松实现软件个性化与美化。 阅读详情

相关推荐

从EXE/DLL文件中提取ICO图标的实用工具设计与实现

提到图标,很多人第一反应是PNG或SVG。但在Windows世界里,.ico才是真正的原生王者。它可不是普通的图像格式,而是一种多图像容器格式,专为操作系统图标系统量身打造。它的核心由三部分构成:ICONDIR:全局头信息:多个图标的描述数组多个DIB位图数据块:实际像素内容// 必须为0// 类型:1表示图标,2表示光标// 图标数量} ICONDIR;每一个都记录了一个图标的宽度、高度、色深以及在文件中的偏移位置。最关键的是,一个.ico。

weixin_42300144的博客 898

Windows 下提取EXE文件中的图标

可以使用两种工具:

yudiandian2014的专栏 5042

ICO 图标提取器(从 exe 和 dll 中提取 ico 图标)

从 exe 和 dll 文件中提取 ico 图标文件 这东西网上很多,但大多都带有插件,少量还有病毒和木马,干脆自己写一个。。。。

EXE图标提取工具 IconViewer

IconViewer是一款能够提取.exe可执行程序的图标提取工具,它能查看、提取并保存在可执行文件和库中的图标,可以导出保存为ICO、JPG、PNG,BMP或者GIF格式图片文件。

eipo_csdn的专栏 4516

EXE图标提取ICO器

可以提取EXE、DLL、的文件图标绿色软件

visual c++用代码 提取EXE或DLL中的图标ico

vc提取EXE或DLL中的资源,比如 图标

Ico图标提取工具是一款功能强大专业的(EXE文件)内提取ICO图标的软件

摘要: Ico图标提取工具是一款专业软件,用于从EXE文件中提取ICO图标。支持图标预览、导出及管理,适用于图标收集、设计定制、资源提取等场景。操作简单,功能强大,帮助用户高效获取和应用图标资源,提升项目美观度与用户体验,是图标处理领域的实用工具。

owmei的博客 581

vc提取指定的exe中的图标,另存为ico文件.zip

vc提取指定的exe中的图标,另存为ico文件.zip visual c++ 提取指定的exe中的图标,另存为ico文件.zip

提取文件原生ico图标

在为 Cobalt Strike exe 木马添加图标中提到了使用软件提取图标,并更换图标的方式。这里单独提一下如何手动获取软件原生图标。思路就是找到相关应用程序的exe文件,解压,找到ico即可。必备工具:Everything、解压缩软件。 举几个例子: 获取Office三件套的ico 1:word图标 使用Everything搜索到word 用解压缩软件打开它 点开仅有的一个文件夹,就会看到一个名为ico的文件夹,把它拖出来即可 2:Excel图标 同理,获取到Excel图标 3:获取PPT,

LainWith的博客 1万+

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1242

RoboMaster机甲大师赛备赛:如何用STM32+CAN总线精准控制四个大疆3508电机?

本文详细介绍了在RoboMaster机甲大师赛中,如何利用STM32和CAN总线技术精准控制四台大疆3508电机。从硬件架构设计、多电机ID分配、数据解析到同步控制算法,全面解析了构建高响应、低延迟底盘驱动系统的关键技术,助力参赛队伍提升机器人运动性能。

weixin_28684825的博客 133

提取dll和exe里ico的软件_改变U盘图标

BeCyIconGrabber.exe 是提取exe文件内图标的软件。iconsext.exe 是提取dll文件内图标的软件。

xtzggcg的博客 571

ITIL-IT运维管理-概述

ITIL-IT运维管理-概述 概述 IT服务管理(ITSM)是一套帮助企业对IT系统的规划、研发、实施和运营进行有效管理的方法,是一套方法论。ITSM起源于ITIL(IT Infrastructure Library,IT基础架构标准库),ITIL是CCTA(英国国家电脑局)于1980年开发的一套IT服务管理标准库。它把英国在IT管理方面的方法归纳起来,变成规范,为企业的IT部门提供一套从计划、研发、实施到运维的标准方法。 中文名 IT服务管理 外文名 ITService Management 专家

syjhct的博客 4万+

Delphi获取 EXE、DLL 或 ICO 文件中的图标

//声明:ExtractIcon(hInst:HINST;{调用函数的程序实例}lpszExeFileName:PChar;{文件路径;文件可以是*.exe、*.dll、*.ico}nIconIndex:UINT{图标索引}):HICON;{返回图标句柄;索引为0时返回第一个图标句柄;索引为#FFFFFFFF时返回图...

weixin_33921089的博客 971

IEEE论文接收后,收到Proof邮件别慌!手把手教你48小时内搞定校样(附详细截图)

本文详细解析了IEEE论文接收后Proof校样的全流程,从邮件关键信息解码到精准修改标注,提供48小时内高效完成校样的实战指南。涵盖登录技巧、文件验证、修改标注黄金法则及九宫格检查清单,帮助作者避免常见错误,确保论文顺利发表。

weixin_30652491的博客 563

ROS开发者的福音:用Anaconda虚拟环境解决Python包冲突(附完整配置流程)

本文为ROS开发者提供了使用Anaconda虚拟环境解决Python包冲突的完整方案。通过分析冲突根源,详细介绍了Miniconda安装、专用环境创建以及核心桥梁包的配置流程,并阐述了“混合环境运行”与“纯虚拟环境构建”两种实战工作流,帮助开发者实现ROS核心与特定Python库的和谐共存,从而提升开发效率和项目可维护性。

weixin_28835789的博客 338

Delphi从EXE或DLL获取ICO图标

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button2: TButton; Button3: TBu...

weixin_30247781的博客 170

【深度学习驱动流体力学】OpenFOAM目录流体力学求解器汇总介绍

下面这些目录结构和其中的求解器和工具展示了OpenFOAM作为一个功能强大且广泛应用的开源CFD软件框架的多样性和灵活性。每个求解器都专门用于解决不同类型的流体动力学问题,从基础的流动模拟到复杂的多相流动和燃烧模拟等各种应用场景。

源代码杀手的博客 1184

如何获取DLL,EXE中的图标

http://www.kennyandkarin.com/Kenny/CodeCorner/Tools/IconBrowser/ Icon Browser: An Exercise in Resource Management By Kenny Kerr, November 2001 Summary Info Prerequisites This article a

不经历风雨怎么见彩虹 2409

【Claude】组织级认证限制报错已解决(4 种)

报错被禁用的是什么谁能解除应急方案整个 Console 组织Anthropic 支持换账户 / 订阅凭证API key 认证方式你的组织管理员用订阅/login订阅 OAuth 登录你的组织管理员用 API keyRoutines 功能你的组织所有者手动计划任务替代共同排查模式/status确认当前凭证;检查环境变量;看清报错消息里命名的是什么(key?组织访问?),对症清除;管理员层面的限制,找管理员解锁。

博客 1万+

天地图下载带审图号(审图号: GS(2024)0650号)的 “行政区划” 数据(含shp文件下载地址)

在科研投稿论文过程中,多数期刊杂志要求我们制作涉及国界的图件,必须使用自然资源部地图技术审查中心发布的标准地图底图。如地理学报、地理科学等期刊的投稿指南中写到:非标准底图本刊不予发表!(如图1.1所示)如果一定要用,凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用自然资源部标准地图服务系统标准地图底图(http://bzdt.ch.mnr.gov.cn/)(如图1.1所示)或国家测绘局地理信息局标准地图底图(如图1.2所示),所用底图边界要完全无修改(包括南海诸岛位置)。

JData_Engineer的博客 2302

Clion-MinGW编译后的exe文件添加ico图标

我们正常直接编译后生成的exe是没有任何图标的 那么很多exe程序都是有个性图标的那么在vs和qt中是比较简单的可是在Clion编译中怎么才能添加呢?经过自己研究发现,我们需要创建一个文件放在项目的根目录, 然后给这个文件添加一些配置信息 圆角制作 , 圆制作 , ioc图片制作然后将图标命名为 放在项目的根目录,之后我们需要将ico.rc文件编译为ico.o 然后有两种方式,手动打包exe和使用Clion编译exe进入项目的根目录然后 注意: module/c

weixin_45203607的博客 1855

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

一个从EXE、DLL文件中提取、存取图标完整程序

       作为一名程序员,会经常为制作、设计程序图标费尽心思,当我们看到许多应用软件的图标非常漂亮的时候,是多么的羡慕!我们可不可以借鉴一下他们的图标?完全可以!我们利用 ExtractIcon API函数就能够轻松地从ICO文件或可执行文件以及DLL文件中提取图标。     下面的代码示范了一个完整的提取图标、存储图标的程序:unit UFormIconGrabber;interface

CoolDesigner的专栏 3679

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

dll,exe图标提取器

dll,exe图标提取器是一款优秀的dll、exe图标提取工具,作用用来提取文件中的图标,dll,exe图标提取器能够将包含在文件中的图标提取出来,提取出来的图标可以保存为ICO、BMP格式。下载地址:http://kuai.xunlei.com/d/GBBBNKAPOZSW...

心语家园 - www.xinyucn.cc 543

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Unity超简单打包成exe文件

Unity的项目可以在编辑器中依次点击“File→BuildSettings”生成exe文件,但是这时还包含了一个Data数据文件夹,下面就来看一下怎么生成一个exe文件,逼格是不是立马提升100倍。 1.准备工作 1.找到UnityPlayer.dll 首先要在Unity安装目录中找到名为UnityPlayer.dll的文件夹,可以看到有4个相同名称的文件,根据项目运行的平台(32...

厉兵秣码 3万+
上一篇: 使用SSE指令优化的数学函数(整理)
下一篇: 光滑曲线拟合算法
dbgnu
博客等级 码龄25年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值