Как установить значок EXE-файла приложения программно? - PullRequest
0 голосов
/ 16 февраля 2019

Как программно изменить значок приложения по умолчанию на пользовательский значок, то есть без использования файла ресурсов (просто поместив значок рядом с файлом EXE).

Я знаю только способ, который использует файл ресурсов,но я хочу знать способ, который делает это программно (код и внешний значок).

Кроме того, я пробовал следующий код:

HANDLE hIcon = LoadImage(0, L"icon.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
HWND hwnd = GetConsoleWindow();
if (hIcon) {
    //Change both icons to the same icon handle.
    SendMessage(hwnd, WM_SETICON, ICON_SMALL,(LPARAM) hIcon);
    SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM) hIcon);

    //This will ensure that the application icon gets changed too.
    SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_SMALL, (LPARAM) hIcon);
    SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_BIG, (LPARAM)hIcon);
}

Но этот код просто меняет значок, которыйв левом углу окна, а не EXE-файл приложения.

Как программно установить значок EXE-файла приложения?

1 Ответ

0 голосов
/ 16 февраля 2019

EXE не может программно изменять свой собственный значок во время выполнения (он может изменять только значок, отображаемый в его окнах пользовательского интерфейса, как вы обнаружили).Значок EXE должен храниться статически в ресурсах EXE, именно там ОС ищет значок.И ресурсы EXE не могут быть изменены во время работы EXE.

Однако вы МОЖЕТЕ создать ярлык для EXE и затем изменить значок ярлыка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...