用于从二进制文件中提取图标的C / C ++库

|| 我正计划为Windows构建一个热键激活的应用程序启动器。我希望它是一个弹出图标网格,您可以在其中单击并启动所需的图标。我希望它能够自动扫描“开始”菜单和“桌面”以查找程序快捷方式并将其分类。但是,我不确定如何从快捷方式/实际二进制文件进行图标检索过程,并且我想知道是否有C / C ++的库可以处理这种事情?如果没有,我将如何处理?     
已邀请:
        我想你要用
ExtractAssociatedIcon
看到 http://msdn.microsoft.com/zh-cn/library/ms648067%28v=VS.85%29.aspx     
        资源提取是从dll / ocx / exe文件提取图像的一种工具。 好吧,如果您不想使用封闭的源代码应用程序,那么这里有一些源代码, 图标提取器     
         LoadLibraryEx-使用
LOAD_LIBRARY_AS_DATAFILE
LOAD_LIBRARY_AS_IMAGE_RESOURCE
EnumResourceNames-查找资源 LoadImage / LoadIcon-加载图像/图标     
        您可能会发现这篇文章很有用:http://www.codeproject.com/KB/shell/shellicon.aspx     
        ExtractIconEx。完整的源代码在我的开源项目中,文件名为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;
}
    

要回复问题请先登录注册