Winapi 更改任务栏中组的图标(Win7)

Winapi 更改任务栏中组的图标(Win7),winapi,windows-7,taskbar,Winapi,Windows 7,Taskbar,使用LoadImage我更改了组中所有窗口的图标。但是,组图标不会更改。如何将相应的组设置到窗口并设置其图标 组图标来自EXE文件本身(如果多个EXE参与同一个组,我想任务栏有一些算法来决定从哪个EXE中提取图标)。没有用于更改组图标的官方API。你必须这样做,这不是不可能的,但也不是微不足道的 更新:我刚刚找到了以下答案,也许会对你有所帮助: 更新:显然,上述链接中的注册表值仅适用于应用程序固定在任务栏上的情况。您的问题在于:该图标实际上是第一个窗口的图标,而不是exe。但是,设置图标后,您

使用
LoadImage
我更改了组中所有窗口的图标。但是,组图标不会更改。如何将相应的组设置到窗口并设置其图标


组图标来自EXE文件本身(如果多个EXE参与同一个组,我想任务栏有一些算法来决定从哪个EXE中提取图标)。没有用于更改组图标的官方API。你必须这样做,这不是不可能的,但也不是微不足道的

更新:我刚刚找到了以下答案,也许会对你有所帮助:


更新:显然,上述链接中的注册表值仅适用于应用程序固定在任务栏上的情况。

您的问题在于:该图标实际上是第一个窗口的图标,而不是exe。但是,设置图标后,您必须右键单击任务栏中的图标,然后将其锁定,然后取消锁定。在取消锁定时,任务栏图标现在会显示第一个windows图标

我不知道如何通过编程实现这一点,也许@RemyLebeau知道。也许
setClassLongPtr
?不确定

现在,当它被固定时,您希望使它使用相同的图标,所以设置注册表值,如@RemyLebeau建议的那样

我也不知道该怎么解释,但是在取消钉住图标后,如果打开跳转列表,图标将恢复为exe的图标。这可能是固定图标的注册表设置修复的,我不确定

哇,所以Win7任务栏真是太好了


编辑:我尝试设置注册表值,但图标不起作用。它可能与以下内容有关:我为
TaskbarGroupIcon
找到的注册表实体都有一个以逗号和数字结尾的数据值(例如
,-4
,在
%SystemRoot%\System32\imageres.dll,-4

据我所知,该算法非常简单:它只选择了第一个。该站点是用于WinXP的,尝试过,但当我在Win7上运行相同的代码时,我得到了返回的处理@CodyGray你能把我链接到algo吗?因为我已经用
LoadImage
设置了所有图标,但它没有取第一组的图标:(@Noitidart:Cody的意思是它使用组中第一个EXE文件的图标,而不是组中第一个窗口的图标。同样,组图标来自EXE文件的资源,在EXE运行时无法更改。Ohhh dang,因此无法让它使用第一个窗口的图标?:(你上面的注册表编辑很好,如果它被固定,它就可以工作,但是如果它被取消固定,它就不能工作。你的链接只针对WinXP正确吗?Win7有什么东西吗?显然没有。任务栏的内部实现在Win7中发生了变化,它不再使用标准工具栏,按钮现在改为自定义绘制的图片。“以逗号和数字结尾的值"-如果不想使用文件的默认图标资源,这就是您在文件中引用特定图标资源的方式。我明白了。我的路径以及主题作者图像是指向
.ico
文件,因此不需要数字。
.ico
文件中可以有多个图标,在这种情况下,数字是一个索引。对于可执行文件,n编号是一个资源id。谢谢,我验证了固定/取消固定一个未固定的已更改图标确实会使任务栏占据图标。我将研究该函数。@RemyLebeau索引是否以0开头?因为我也使用了没有逗号的.ico,所以可能这就是为什么没有显示任何内容的原因,嗯?我们可以使用.png吗?自我说明:研究设置固定吗通过编程设置图标。要设置非固定图标,我还需要研究。