c++ - 如何以编程方式设置应用程序 EXE 文件的图标?
问题描述
如何以编程方式将默认应用程序图标更改为自定义图标,即不使用资源文件(只是在 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 文件的图标?
解决方案
EXE 无法在运行时以可编程的方式更改其自己的图标(正如您所发现的,它只能更改其 UI 窗口中显示的图标)。EXE 的图标必须静态存储在 EXE 的资源中,也就是操作系统查找图标的地方。并且在EXE运行时不能改变EXE的资源。
但是,您可以创建 EXE 的快捷方式,然后更改快捷方式的图标。
推荐阅读
- ios - 在创建游戏的范围之外,如何在 iOS 中创建程序生成的可视化?
- r - R中的LaTeX汇总统计表,按组显示平均值和标准差
- python-3.x - 想使用 MechanicalSoup follow_link() 或类似方法关注 javascript 链接
- amazon-web-services - 将正在运行的 AWS 实例移动到不同的区域
- angular - 将默认 Firebase 配置注入 Angular 应用程序
- sql - 查询oracle
- python - 使用python对整个文本文件进行有效的自动更正?
- java - args[0], args[1] 是变量吗?
- kotlin - 异步构造生产者
- sass - 我需要将 mixin 从 scss 重写为 less