2016-03-31 17 views
0

WM_SETICONを使用してアプリケーションのアイコンを変更しています。これは、プログラムがVisualStudioデバッガまたはコマンドライン経由で実行されているときに機能しますが、Windows 7のデスクトップショートカットから起動したときに間違ったタスクバーアイコンを使用します。プログラムをタスクバーに固定してから固定解除すると、アイコンが正しく表示されます。ショートカット経由でプログラムを起動したときにWM_SETICONが機能しない

HICON icon = (HICON) LoadImage(NULL, iconStr, IMAGE_ICON, 32, 32, LR_LOADFROMFILE| LR_SHARED); 
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)icon); 
SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)icon); 
SendMessage(hwnd, WM_SETICON, ICON_SMALL2, (LPARAM)icon); 

ショートカットによって起動について何かプログラムが古いキャッシュされたアイコンを使用してWM_SETICONを無視する原因になっているかのように思えます。また、プログラムのタイトルバーの横にある小さなアイコンも正しく更新されています。問題があるのはタスクバーのアイコンだけです。

アイコンをプログラムで設定する必要があります。コマンドラインに基づいて変更されるためです。誰もがこの仕事をする方法を知っていますか?ありがとう。

答えて

0

回避策が見つかりました。ショートカットで参照されるexeファイルはアイコンを変更できないため、別のファイル名でexeファイルを起動し、WM_SETICONでタスクバーアイコンを変更することができます。

ショートカット(1-n)にはそれぞれ独自のアイコンがあり、IgnoresWMSetIcon.exeをポイントします。 起動時にIgnoresWMSetIcon.exeがCanChangeIcon.exeを起動して終了します。 CanChangeIcon.exeは正常に機能することができます。

誰かが知っている場合、なぜこれが当てはまるのかについての説明に興味があります。

関連する問題