任何人都可以显示简短的代码片段吗?它应该以.exe的名称作为输入并输出.ico文件。越短越好,请不要推荐任何二进制文件。这似乎是这样一个简单的任务,但我发现的唯一代码看起来非常臃肿。谢谢!从.exe提取图标的简单代码
1
A
回答
4
虽然听起来很简单,但实际上它与Win32中的大部分内容一样,并不是微不足道的。特别是这个代码库的整个部分感觉真的非常老了......操纵它是一个极大的痛苦。加重这一点的是,每个文件有多个图标大小,以及每个文件每个大小有多个图标。
这里有一些旧代码,它可以完成很多你需要的东西(但不是全部)。
一些设置:
static const int _MAX_ICONS = 2;
typedef struct INTERNAL_ICON_INFO
{
HICON hIcon;
int nSize;
} INTERNAL_ICON_INFO;
typedef struct TAG_ICON_BUNDLE_DETAILS
{
int nLargeIcons;
INTERNAL_ICON_INFO aiiLargeIcons[_MAX_ICONS];
int nSmallIcons;
INTERNAL_ICON_INFO aiiSmallIcons[_MAX_ICONS];
} ICON_BUNDLE_DETAILS;
的图标提取码:
HINSTANCE hTargetModule = LoadLibrary((LPCTSTR)stTargetFile);
if (NULL != hTargetModule)
{
int nIconCount = ExtractIconEx((LPCTSTR)stTargetFile, -1, NULL, NULL, 0); // get total icon count
ICON_BUNDLE_DETAILS* priiArray = new ICON_BUNDLE_DETAILS[nIconCount];
int nExtracted = 0;
for (int i = 0; i < nIconCount; i++)
{
HICON* phiLargeIcons = new HICON[nIconCount];
HICON* phiSmallIcons = new HICON[nIconCount];
nExtracted = ExtractIconEx((LPCTSTR)stTargetFile, i, phiLargeIcons, phiSmallIcons, _MAX_ICONS);
for (int j = 0; j < nExtracted; j++)
{
ICONINFO ii;
GetIconInfo(phiLargeIcons[j], &ii);
priiArray[i].nLargeIcons = nExtracted;
priiArray[i].aiiLargeIcons[j].hIcon = phiLargeIcons[j];
priiArray[i].aiiLargeIcons[j].nSize = sizeof(ICONINFO);
}
for (j = 0; j < nExtracted; j++)
{
priiArray[i].nSmallIcons = nExtracted;
priiArray[i].aiiSmallIcons[j].hIcon = phiSmallIcons[j];
priiArray[i].aiiSmallIcons[j].nSize = sizeof(ICONINFO);
}
}
if (nExtracted > 0)
{
// process extracted icons
}
}
总之,这段代码这应该由开裂EXE和让你在图标本身让你对你的方式打开目标文件,统计其中有多少图标,然后获取有关每个ICONINFO每个实例的信息。这是我认为你关心的结构,因为它包含位图本身。
从ICONINFO到新的.ico文件不是我们需要做的事情,所以我无法帮助那部分...但它有多难? ;-)
祝你好运!
0
我发现这一点:
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Icon = Icon.ExtractAssociatedIcon(My.Application.Info.DirectoryPath
& "\" & My.Application.Info.AssemblyName & ".exe")
End Sub
相关问题
- 1. 从.exe提取C#代码
- 2. 从源代码中提取共享密码有多简单
- 3. 简单的html DOM从脚本jwplayer代码获取图像
- 4. 在Ubuntu Linux中提取EXE图标
- 5. 从EXE中提取所有图标而不使用ExtractIconEx
- 6. 使用简单的java代码提取css属性值
- 7. 从EXE中提取文件
- 8. 用WiX代替exe图标
- 9. 从java代码运行exe
- 10. 从cgal提取代码
- 11. 从APK提取源代码
- 12. 简单的uml图到java代码
- 13. 简单代码,但游标仍然从内容提供者返回空值
- 14. VBA简单代码
- 15. Php简单代码
- 16. 运行简单代码时获取java.lang.NoSuchMethodError
- 17. 简单的代码来从网络获取SSID
- 18. 简单的数字提取
- 19. 简单的regex提取
- 20. 如何从简单的html-dom网站提取图像?
- 21. 从Zookeeper提取简单配置
- 22. 从URL(简单)提取资料Tweet ID
- 23. 与简单的print_r()代码
- 24. 非常简单的代码
- 25. 执行简单的代码
- 26. 简单的代码(jQuery)
- 27. 简单的RSA代码
- 28. 简单的PHP代码...?
- 29. 简单的代码优化
- 30. 简单的拆分代码
语言/技术? – Noldorin 2009-08-28 22:49:56
任何语言。只是寻找有效的东西。 :) – Lin 2009-08-29 07:56:16