差不多在做Phoebe的时候已经看到有一些程序实现了Win7的一些新特性,如Chrome就支持下载进度在任务栏上显示。当时本来想做做看,不过考虑到又要和原来的程序整合,而且意义也不是特别大,所以也就作罢。但是最近闪印基本又要发新版本了,自己这边基本又没什么bug,蛋疼得慌,无聊查了查MSDN上相应的接口定义 ,整了个大概。基本上,Win7下任务栏的新特性都是通过ITaskBarList3这个接口来实现,其定义可以在Shobjidl.h中找到(Win7 SDK),像我们用的是VS2008 SP1,默认的SDK版本号是6.1A,是找不到其定义的。所以比较直接的做法自然是安装Win7 SDK,将这个SDK设置成当前VS的默认SDK。但这样做的最大问题就是兼容性,Win7 SDK下很多头文件和原先的并不兼容,尤其是strsafe.h这个头文件,很多定义都发生了变化,跑老工程基本会有一堆的编译错误。尝试过将原先的strsafe.h和相应的lib文件替换掉Win7 SDK的内容,编译运行,一切OK,但是毕竟为了加这么点功能,把SDK里面原有的文件修改掉,带来的风险也太大了,所以这种方法还是不太可取。于是相应的只能采取比较取巧的方法,因为本身ITaskBarList3是基于COM的,所以我们只要提供一个正确的GUID和相应方法定义即可,跑WIN7 SDK的include文件下把ITaskBarL
...
继续阅读