首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Exe文件图标更改。来自SHELL32.dll的图标

Exe文件图标更改。来自SHELL32.dll的图标
EN

Stack Overflow用户
提问于 2011-03-01 00:58:17
回答 1查看 1.5K关注 0票数 1

我需要改变一些exe文件图标使用我的程序。我已经在MSDN和网站上找到了一些信息和示例代码,但我仍然在相同的地方。

我需要从SHELL32.dll中提取图标

代码语言:javascript
复制
uInt = ExtractIconEx("%SystemRoot%\\system32\\SHELL32.dll" , -63008, &hIcon, NULL, 1);

然后更新一些exe文件资源。但在这里我的问题开始了。我不知道如何使用ExtractIconEx()函数返回的HICON作为UpdateResource()函数的参数。

下面是函数代码:

代码语言:javascript
复制
void ChangeFileIcon(char * file)
{
    HICON hIcon;
    UINT uInt;
    HANDLE hFile;
    LPVOID lpResLock;

    uInt = ExtractIconEx("%SystemRoot%\\system32\\SHELL32.dll" , -63008, &hIcon, NULL, 1);
    printf("%d", uInt);

    lpResLock = LockResource(hIcon); 
    if (lpResLock == NULL){
        printf("LockResource fail ;s\n");
        return ;
    }

    hFile = BeginUpdateResource(file, false);

    if(hFile == NULL){
        printf("hFile == NULL - error %d\n", GetLastError());
        return;
    }

    UpdateResource(hFile, 
        RT_ICON, 
        MAKEINTRESOURCE(1), 
        MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
        lpResLock(?),
        SizeofResource(????, ????)););

    EndUpdateResource(hFile, FALSE);
}

这里有来自MSDN的示例,但它对我一点帮助都没有:http://msdn.microsoft.com/en-us/library/ms648008%28v=vs.85%29.aspx#_win32_Updating_Resources (在此示例资源中,从一个可执行文件复制到另一个)

谢谢你的回答,布里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-01 03:24:46

在这种情况下,您不能使用HICON,HICON是特定大小和颜色深度的单个图像,但“真正的”图标资源通常是图像的集合(16x16、32x32等)

不要使用ExtractIconEx,切换到LoadLibraryEx (并使用其中一个load as data file标志),然后使用FindResourceEx查找图标资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5144999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档