【发布时间】:2015-02-07 06:40:18
【问题描述】:
我的 .exe 有一个硬编码的图标,但在运行时它可以从文件中加载另一个图标。它通过执行以下操作激活从文件加载的图标:
Application->Icon->LoadFromFile(filename);
在 C++Builder 中,归结为在 Delphi 中对 Windows API 的以下调用:
SendMessage(Handle, WM_SETICON, ICON_BIG, LPARAM(GetIconHandle));
SetClassLong(Handle, GCL_HICON, LPARAM(GetIconHandle));
如果我从 C:\ 或任何用户目录启动我的可执行文件,那么以下图标都会正确更新:
- 主窗口标题栏上的角图标
- Alt-Tab 屏幕中的图标
- 任务栏上的图标
但是,如果我启动已复制到文件夹 C:\Program Files\MyApp 中的完全相同的可执行文件,那么前两个会正确更新。但是,任务栏上的图标没有更新。任务栏仍然显示硬编码的图标。
C:\Program Files下启动的程序的任务栏图标是否有某种特殊保护?或者这里发生了什么?
我有cleared the icon cache,这没什么区别。我也尝试过在ICON_SMALL 中添加一个额外的SendMessage,但这也没什么区别。
【问题讨论】:
标签: windows winapi windows-7 icons taskbar