【问题标题】:WM_SETICON not working when program launched via shortcut通过快捷方式启动程序时 WM_SETICON 不起作用
【发布时间】:2016-07-19 05:50:44
【问题描述】:

我正在使用 WM_SETICON 来更改应用程序的图标。这适用于程序在 VisualStudio 调试器中或通过命令行运行时,但在通过 Windows 7 上的桌面快捷方式启动时使用错误的任务栏图标。右键单击以将程序固定到任务栏,然后取消固定它会导致图标正确显示.

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。程序标题栏旁边的小图标也在正常更新,只是任务栏上的图标有问题。

我确实需要以编程方式设置图标,因为它会根据命令行进行更改。有谁知道使这项工作的方法?谢谢。

【问题讨论】:

    标签: c++ windows icons shortcut sendmessage


    【解决方案1】:

    我确实找到了解决方法。由于快捷方式引用的 exe 无法更改其图标,因此它可以启动具有不同文件名的 exe,然后可以使用 WM_SETICON 更改任务栏图标。

    快捷方式 (1-n) 每个都有自己的图标并指向 IgnoresWMSetIcon.exe。 在启动时 IgnoresWMSetIcon.exe 启动 CanChangeIcon.exe 然后关闭。然后CanChangeIcon.exe就可以正常运行了。

    如果有人知道,仍然有兴趣解释为什么会这样。

    【讨论】:

      猜你喜欢
      • 2020-05-09
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2011-02-10
      • 2012-06-14
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多