Только что встретил эту проблему по следующему простому сценарию (все на win7):
- создать A.exe со значком B
- создать B.lnk, связанный с A.exe с другим значком C (от winapi CreateLink)
- запустить с нажатием B.lnk. На некоторых машинах win7 значок панели задач - C. Но на некоторых других машинах (также win7) это B.
Если значок C, его даже нельзя изменить следующим кодом:
const HANDLE bigicon = ::LoadImage(::GetModuleHandle(0), MAKEINTRESOURCE(IDI_TO_ICON), IMAGE_ICON, 256, 256, 0);
if (bigicon) {
::SendMessage(theMainWnd, WM_SETICON, ICON_BIG, (LPARAM)bigicon);
::SendMessage(GetWindow(theMainWnd, GW_OWNER), WM_SETICON, ICON_BIG, (LPARAM)bigicon);
}
const HANDLE smallicon = ::LoadImage(::GetModuleHandle(0), MAKEINTRESOURCE(IDI_TO_ICON_SMALL), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
if (smallicon) {
::SendMessage(theMainWnd, WM_SETICON, ICON_SMALL, (LPARAM)smallicon);
::SendMessage(GetWindow(theMainWnd, GW_OWNER), WM_SETICON, ICON_SMALL, (LPARAM)smallicon);
}