如何以编程方式设置应用程序EXE文件的图标?

Lio*_*ing -1 c++ winapi

如何以编程方式将默认应用程序图标更改为自定义图标,即不使用资源文件(只需在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);
}
Run Code Online (Sandbox Code Playgroud)

但该代码只是更改窗口左下角的图标,而不是应用程序EXE文件.

如何以编程方式设置应用程序EXE文件的图标?

Rem*_*eau 5

EXE无法在运行时以可编程方式更改自己的图标(它只能更改其UI窗口中显示的图标,如您所发现的).EXE的图标必须静态存储在EXE的资源中,即操作系统查找图标的位置.EXE运行时,EXE的资源无法更改.

但是,您可以创建EXE的快捷方式,然后更改快捷方式的图标.