J'essaye d'ajouter dynamiquement une icone a un exécutable(Qui n'a pas d'icone, pour ne pas dire remplacer).
Voila mon code source :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
    HANDLE hIcon,hUpdate;    
    unsigned char * pICON;
    unsigned long BytesRead,TailleIcon;
 
 
    hIcon = CreateFile("icone.ico", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
 
    printf("[*]Loading ICON\n");
    if(hIcon == INVALID_HANDLE_VALUE)
    {
        error("Error - Cannot find icone.ico");
    }
 
    TailleIcon = GetFileSize(hIcon, NULL);
 
    if(TailleIcon == INVALID_FILE_SIZE)
    {
        CloseHandle(hIcon);
        error("Error - Cannot retrieve icone.ico size");
    }
    //*
    pICON = (unsigned char *)malloc(TailleIcon);
    if(pICON == NULL)
    {
        CloseHandle(hIcon);
        error("Error - Cannot allocate room");
    }
    ReadFile(hIcon, pICON, TailleIcon, &BytesRead, NULL);
    CloseHandle(hIcon);
 
 
    hUpdate = BeginUpdateResource("application.exe", FALSE);
    if (UpdateResource(hUpdate,RT_ICON,MAKEINTRESOURCE(1), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), pICON, TailleIcon)==0)
    {
        error("Error - Could not update resource");
    }
 
    EndUpdateResource(hUpdate, FALSE);
En utilisant ResHacker, je vois que la ressource ICO a été ajouté, Mais l'icone ne s'affiche pas.

Mon exécutable application.exe reste sans icone.