2014-12-09 2 views
1

У моего .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, но это тоже не имело значения.

ответ

1

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

Смежные вопросы