2014-12-09 27 views
1

我的.exe文件具有硬编码图标,但在运行时它可以从文件加载另一个图标。它通过激活做从文件加载图标:在运行时更改任务栏图标如果exe文件位于Program Files文件中

Application->Icon->LoadFromFile(filename); 
在C++ Builder,它归结为德尔福以下调用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,但这也没有什么区别。

  • 回答

    1

    我遇到了完全相同的问题。我的解决方案是创建一个虚拟程序,它完全执行我的主要可执行文件的一个spawnlp(然后退出)。我可以将虚拟程序固定到任务栏或启动菜单,而且现在我的主程序的任务栏图标在运行时如何更改。

    相关问题