Windows7之前的操作系统,显示在任务栏的图标主要由窗口决定,窗口的属性决定了是否显示图标,显示的窗口图标也就是在任务栏的图标。
Win7就不是这样了,本质上它是和进程关联的,而不是和窗口,一个进程如果有多个窗口需要在任务栏显示,会合并在一起,然后通过点击这个进程图标展开子窗口模式操作。这也正合win7新加的jumplist功能相一致,jumplist就是以appid做关键字来操作的,相关其他Win7任务栏特性请参考其他相关资料。
正因为Win7的这个修改,所以在Win7上运行的程序不要指望修改你的窗口图标达到修改在任务栏显示的大图标的效果,修改的图标影响的只是展开的子窗口(对应窗口会有一个所谓子窗口展开)图标。
再由正因为这个图标关联的是进程,所以在Win7系统上也把进程快捷方式设置的图标关联起来了,什么意思呢?我们举个例子:
场景一、
进程A的图标是ICON_A,然后我们创建A的快捷方式,并修改快捷方式图标为ICON_B.
此时,我们启动进程A,发现任务栏上显示的图标是ICON_B.当然,如果直接使用快捷方式启动,显示的图标那还是ICON_B。
可见:快捷方式的创建影响了本身进程的图标显示,且优先级比本进程高。
场景二、
我们在场景一的基础上再创建一个快捷方式,更改快捷方式图标为ICON_C.
此时,
· 我们直接启动进程A,发现任务栏上显示的图标是ICON_B
· 启动快捷方式B,发现任务栏上显示的图标是ICON_B
· 启动快捷方式C,发现任务栏上显示的图标是ICON_C
可见:快捷方式的优先级是最高的,且使用的是当前快捷快捷方式使用的图标,而直接从进程启动,使用的是最早创建的那个快捷方式的图标。
场景三、
我们再删除快捷方式呢?
· 删除快捷方式B
o 我们直接启动进程A,发现任务栏上显示的图标是ICON_C
o 启动快捷方式C,当然任务栏上显示的图标是ICON_C
· 再删除快捷方式C
o 我们直接启动进程A,发现任务栏上显示的图标是ICON_A,回到原始了。
结论:如果有删除快捷方式,使用的是剩下快捷方式里最早创建的那个,当所有快捷方式都删除后才恢复到原始进程的图标。