2014-12-09 36 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(然後退出)。我可以將虛擬程序固定到任務欄或啓動菜單,而且現在我的主程序的任務欄圖標在運行時如何更改。

    相關問題