【发布时间】:2014-08-08 00:47:50
【问题描述】:
使用LoadImage我更改了一个组中所有窗口的图标。但是组图标不会改变。如何将相应的组获取到窗口并设置其图标?
【问题讨论】:
-
自我注意:研究System.AppUserModel.RelaunchIconResource以编程方式设置PINNED图标。要设置非固定图标,我还需要研究。
使用LoadImage我更改了一个组中所有窗口的图标。但是组图标不会改变。如何将相应的组获取到窗口并设置其图标?
【问题讨论】:
组图标来自 EXE 文件本身(在多个 EXE 参与同一组的情况下,我想任务栏有一些算法来决定从哪个 EXE 中提取图标)。没有官方 API 可以更改群组图标。你必须manipulate the Taskbar directly,这不是不可能的,但也不是微不足道的。
更新:我刚刚遇到以下答案,也许它会对您有所帮助:
https://stackoverflow.com/a/219128/65863
更新:显然,上述链接中的注册表值仅适用于应用固定到任务栏的情况。
【讨论】:
LoadImage 设置了所有图标但它没有使用第一组的图标:(
您的问题是:该图标确实采用了第一个 WINDOW 的图标,而不是 exe。但是,设置图标后,您必须右键单击任务栏中的图标,然后将其固定,然后将其取消固定。在取消固定任务栏图标时,现在采用第一个 Windows 图标。
我不知道如何以编程方式做到这一点,也许@RemyLebeau 知道。也许setClassLongPtr?不确定。
现在当它被固定时,你想让它使用相同的图标,所以像@RemyLebeau 建议的那样设置注册表值。
我也不知道怎么解释,但是在取消固定后,如果你打开跳转列表,图标就会恢复到exe的图标。这可以通过固定图标的注册表设置来解决,我不确定。
哇,Win7 的任务栏真是太棒了。
编辑:我尝试设置我的注册表值,但图标不起作用。它可能与以下内容有关:我为TaskbarGroupIcon 找到的注册表项都有一个以逗号和数字结尾的数据值(例如:%SystemRoot%\System32\imageres.dll,-4 中的,-4)
【讨论】:
.ico 文件,所以不需要数字。
.ico 文件中可以有多个图标,在这种情况下,数字是索引。对于可执行文件,数字是资源 ID。