C# .exe和.dll文件图标资源提取工具
2021-06-23 12:57
585 查看
Windows 可执行文件(.exe)和动态库文件(.dll)图标资源提取工具
功能
- 图标资源预览
- 图标资源导出(仅支持导出 PNG 格式)
代码
获取图标资源使用了 Win32 API PrivateExtractIconsW
PrivateExtractIconsW 对应的 C# 代码
[DllImport("User32.dll")] internal static extern uint PrivateExtractIcons( /* _In_reads_(MAX_PATH) */ string szFileName, /* _In_ */ int nIconIndex, /* _In_ */ int cxIcon, /* _In_ */ int cyIcon, /* _Out_writes_opt_(nIcons) */ IntPtr[] phicon, /* _Out_writes_opt_(nIcons) */ uint[] piconid, /* _In_ */ uint nIcons, /* _In_ */ uint flags);
参数:
szFileName 要从中提取图标的文件的路径和名称。
nIconIndex 要提取的第一个图标的从零开始的索引。例如,如果此值为零,则该函数会提取指定文件中的第一个图标。
cxIcon 想要的水平图标大小。
cyIcon 想要的垂直图标大小。
phicon 指向返回的图标句柄数组的指针。
piconid 指向最适合当前显示设备的图标的返回资源标识符的指针。
nIcons 要从文件中提取的图标数。此参数仅在从 .exe 和 .dll 文件中提取时有效。
flags 指定控制此功能的标志。
主要步骤
- 需要先获取文件中的图标总数量。phicon 参数为 NULL,返回值为文件中的图标数
int _nIcons = PrivateExtractIcons(filePath, 0, 0, 0, null, null, 0, 0);
- 获取所有图标资源句柄。返回值为获取到的图标数量
IntPtr[] phicon = new IntPtr[_nIcons]; uint[] piconid = new uint[_nIcons]; uint nIcons = PrivateExtractIcons(filePath, 0, 32, 32, phicon, piconid, _nIcons, 0);
- 转换成位图。需要释放资源
for (int i = 0; i < nIcons; i++) { Icon icon = Icon.FromHandle(phicon[i]); Bitmap bitmap = icon.ToBitmap(); icon.Dispose(); _ = DestroyIcon(phicon[i]); }
相关文章推荐
- 控件注册 - 利用资源文件将dll、ocx打包进exe文件(C#版)
- 将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- 用Visual Studio 2005/2008提取EXE文件中的资源[图片|htm|光标文件]
- 用资源文件做捆绑工具,(exe加入资源文件)
- 用ILmerge工具将C#中的EXE和DLL文件合并成单个文件
- VS 2008潜在强大的功能:提取EXE文件中的ICO等资源
- 黄聪:将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- windows应用程序(C#)生成的EXE文件图标修改
- 将文件作为资源放入VC工程中?在运行时从EXE文件中提取(释放)出这个文件?
- 用Visual Studio 2005/2008提取EXE文件中的资源[图片|htm|光标文件]
- Qt之提取exe/dll/icon文件图标
- 用Visual Studio 2005/2008提取EXE文件中的资源[图片|htm|光标文件]
- 用ILmerge工具将C#中的EXE和DLL文件合并成单个文件
- C# 利用自带xsd.exe工具操作XML-如通过XML生成xsd文件
- C# 加壳.exe程序文件(调用嵌入资源的exe文件)
- 一个从EXE、DLL文件中提取、存取图标完整程序
- 如何将自己的文件作为资源文件放入VC工程中?如何在运行时,从EXE文件中提取(释放)出这个文件?
- C#怎么修改生成的EXE文件图标
- C#中怎样让引用的.dll文件也集成到生成的.exe文件中
- GetIcons:C#提取应用程序的图标资源