我打算为Windows构建一个热键激活的应用程序启动器。我打算让它成为一个弹出式图标网格,然后您可以点击并启动所需的图标。我希望它能够自动扫描开始菜单和桌面以查找程序快捷方式并对其进行编目。但是,我不确定如何从快捷方式/实际二进制文件中进行图标检索过程,我想知道是否有任何C/C++库处理这种事情?如果不是,我会怎么做呢?从二进制文件中提取图标的C/C++库
回答
我不是这方面的专家,但'ExtractIcon'函数看起来好像也是一个很好的函数。 – templatetypedef
不错!这看起来正是我所需要的。我认为索引将为0我需要的图标是正确的? – delaccount992
resources extract是一个这样的工具,它从dll/ocx/exe文件中提取图像。
好吧,如果你不想使用一个封闭源代码的应用程序,这里是我想你想使用ExtractAssociatedIcon
看到的东西与源, Icon Extractor
有趣。我宁愿不使用它,因为我不得不依赖外部程序和其他人的封闭源代码,但是我认为如果我找不到其他东西,它会作为最后的手段。感谢您的建议! – delaccount992
- LoadLibraryEx - 使用
LOAD_LIBRARY_AS_DATAFILE
或LOAD_LIBRARY_AS_IMAGE_RESOURCE
- EnumResourceNames - 找资源
- LoadImage/LoadIcon - 加载图像/图标
ExtractIconEx。完整的源代码位于我的open source project,文件名为icon.cpp。它支持系统变量的扩张,正从索引的图标,像%SYSTEMROOT%\system32\shell32.dll,43
这里是它的胆量:
HICON GoFindAnIcon(LPCTSTR path)
{
HICON icon = 0;
//not using our parent's icon
if(_tcsicmp(L"parent", path))
{
icon = (HICON)LoadImage(0, path, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_LOADFROMFILE|LR_LOADMAP3DCOLORS);
if(!icon)
{
//Try something else
TCHAR mypath[MAX_PATH];
const TCHAR *cleanpath = path;
const TCHAR *comma;
comma = _tcsrchr(path, ',');
UINT index = 1;
if(comma)
{
_tcsncpy(mypath, path, comma-path); //Can you exploit this buffer overflow ?
mypath[comma-path] = TCHAR(0);
index = _ttoi(comma+1);
cleanpath = mypath;
}
ExtractIconEx(cleanpath, index, 0, &icon, 1);
}
}
else
{
icon = GetParentProcessIcon();
}
return icon;
}
- 1. 从与CMake的二进制文件中提取库版本
- 2. 从大型二进制文件中提取zip文件
- 3. 从Python中的二进制文件中提取字符串
- 4. 从VB.Net中的二进制文件中提取字符串
- 5. 从外部库的二进制文件中获取类
- 6. 从PDB文件中提取二进制名称
- 7. 可以从iOS二进制文件中提取iOS类吗?
- 8. 从二进制文件中提取变量名?
- 9. 从二进制文件中提取和排序数据
- 10. 用php从二进制文件中提取数据
- 11. C#从读取文本文件中读取二进制文件
- 12. 从二进制文件条形标题
- 13. PHP从结构的二进制文件提取数据
- 14. 从URLConnection读取二进制文件
- 15. 从GUI读取二进制文件
- 16. 从二进制文件获取datetime
- 17. 从二进制文件读取Scala
- 18. 从hdd ole二进制文件提取对象
- 19. 如何从特定的二进制文件格式中提取文本?
- 20. 如何从目标文件制作Mach-O二进制文件?
- 21. 从二进制图像中提取光滑边界
- 22. EOFException从二进制文件,学生数据库中读取UTF文件
- 23. 提取C二进制_fini
- 24. 从python中的二进制文件中提取zlib压缩数据
- 25. 在MatLab中读取二进制文件
- 26. 在Python中读取二进制文件
- 27. 使用C++从.exe/.dll等二进制文件中提取文本
- 28. 从MIPS中的二进制文件中读取
- 29. 从Python中的二进制文件中读取整数
- 30. 从java中的二进制文件中读取对象
可执行文件可以包含许多图标 - 你特别希望Windows显示在一个开始菜单或资源管理器,正确? –
是的,就是那个。 – delaccount992