У моего .exe есть жесткий диск, но во время выполнения он может загрузить еще один значок из файла. Он активирует значок загруженного из файла, выполнив:Изменить значок панели задач во время выполнения, если exe находится в программных файлах
Application->Icon->LoadFromFile(filename);
в C++ Builder, который сводится к следующим вызовам в Windows API, в Delphi:
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, и это не имеет значения. Я также попытался добавить дополнительный SendMessage
с ICON_SMALL
, но это тоже не имело значения.