WPF 4 开发Windows 7 任务栏(Overlay Icon、Thumbnail Toolbar、Progress Bar)

article/2025/8/22 7:53:47

     在上一篇我们介绍了如何在WPF 4 中开发Windows 7 跳转列表,本篇将继续针对WPF 4 中任务栏其他功能:覆盖图标(Overlay Icon)、进度条(Progress Bar)、缩略图工具栏(Thumbnail Toolbar)进行研究。对于这些功能的API 开发可参考《Windows 7 任务栏开发系列汇总》。

TaskbarItemInfo

     在System.Windows.Shell 命名空间中,TaskbarItemInfo 类包含的上述所有Windows 7 任务栏开发功能,通过它我们可以自定义软件任务栏的各种功能,其类成员可参考:TaskbarItemInfo Members。

ThumbButtonInfo

     同样在System.Windows.Shell 命名空间中,ThumbButtonInfo 类为我们提供了开发缩略图工具栏的功能,其类成员可参考:ThumbButtonInfo Members,使用方式在下文中将会介绍。

覆盖图标(Overlay Icon)

     通过API 开发Overlay Icon 时,需要简单调用SetOverlayIcon 方法即可。在WPF 4 中开发仍然很简单,只需在XAML 中为TaskbarItemInfo 类的Overlay 属性赋上Icon 值便可实现,如下代码所示:

<Window.TaskbarItemInfo><TaskbarItemInfo x:Name="taskBar" Overlay="Resources/Question.ico"Description="Taskbar Items Sample"></TaskbarItemInfo>
</Window.TaskbarItemInfo>

这样就在程序图标上增加了一个“问号图标”:

缩略图工具栏(Thumbnail Toolbar)

     下面我们为程序增添一个缩略图工具栏,向其中加入盾牌按键(Safe.ico),点击后便更换掉上图的“问号图标”。首先在前面代码的基础上增加ThumbButtonInfo 内容为工具栏装载按键:

<Window.TaskbarItemInfo><TaskbarItemInfo x:Name="taskBar" Overlay="Resources/Question.ico"Description="Taskbar Items Sample"><TaskbarItemInfo.ThumbButtonInfos><ThumbButtonInfo x:Name="changeIcon"
DismissWhenClicked="True"
Click="changeIcon_Click"Description="Change overlay icon"ImageSource="Resources/Safe.ico"/></TaskbarItemInfo.ThumbButtonInfos></TaskbarItemInfo> </Window.TaskbarItemInfo>

     在代码中DismissWhenClicked 的作用是决定点击按键后缩略图窗口是否关闭(默认为False);Description 为按键描述;ImageSource 为按键图标;Click 点击时会触发相应事件。下面代码即为点击后触发的changeIcon_Click 事件:

private ImageSource IconToBitmapSource(Icon img) 
{Bitmap bitmap = img.ToBitmap();IntPtr hBitmap = bitmap.GetHbitmap();ImageSource bitmapSource =Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());return bitmapSource;
}private void changeIcon_Click(object sender, EventArgs e)
{taskBar.Overlay = IconToBitmapSource(Win7TaskbarDemo.Properties.Resources.Safe); 
}

     代码中IconToBitmapSource 是将System.Drawing.Icon 转换为System.Windows.Media.ImageSource 的函数,可将程序中的Icon 图片转化为ImageSource 赋值给Overlay 使用。如果想取消Overlay 图标,就将taskBar.Overlay 设为null。可见对于Overlay 的替换也是十分简便的。

 运行效果      点击后效果

进度条(Progress Bar)

     在WPF 4 中任务栏进度条状态仍然是五种(如下表所示)。为了改变任务栏进度条状态,我们再往缩略图工具栏中加入一个按键,使其在点击时改变进度条颜色。

<Window.TaskbarItemInfo><TaskbarItemInfo x:Name="taskBar" Overlay="Resources/Question.ico"Description="Taskbar Items Sample"><TaskbarItemInfo.ThumbButtonInfos><ThumbButtonInfoCollection><ThumbButtonInfo x:Name="changeIcon"DismissWhenClicked="True"Click="changeIcon_Click"Description="Change overlay icon"ImageSource="Resources/Safe.ico"/><ThumbButtonInfo x:Name="progressState"DismissWhenClicked="False"Click="progressState_Click"Description="Change progress state"ImageSource="Resources/Error.ico"/></ThumbButtonInfoCollection></TaskbarItemInfo.ThumbButtonInfos></TaskbarItemInfo>
</Window.TaskbarItemInfo>

为progressState_Click 事件增加一些内容,通过ProgressState 调整进度栏状态;用ProgressValue 设置进度值:

private void progressState_Click(object sender, EventArgs e)
{taskBar.ProgressState = TaskbarItemProgressState.Error;taskBar.ProgressValue = 0.4;
}

点击前后的对比图:

     

缩略图调整

     在新WPF 4 中我们可以通过TaskbarItemInfo 的ThumbnailClipMargin 属性来调整程序窗口在缩略图中显示的内容。如下图所示,默认情况下缩略图会显示程序窗口全貌。下面通过在XAML 中设置ThumbnailClipMargin 值使缩略图只显示“Reset”按键部分。

     

<Window.TaskbarItemInfo><TaskbarItemInfo x:Name="taskBar"ThumbnailClipMargin="120,90,120,40"Overlay="Resources/Question.ico"Description="Taskbar Items Sample" />
</Window.TaskbarItemInfo>

效果图:

     至此,在WPF 4 中开发Windows 7 任务栏的内容就介绍完了,后续将会介绍一些WPF 4 的其他新功能,敬请关注!下周的这个时候VS2010 就正式发布了,到时大家也可以亲身的体验一下~

参考资料

1. Windows 7 任务栏开发系列汇总
http://www.cnblogs.com/gnielee/archive/2010/03/21/1691101.html

2. TaskbarItemInfo Class
http://msdn.microsoft.com/en-us/library/dd783827(v=VS.100).aspx

3. ThumbButtonInfo Class
http://msdn.microsoft.com/en-us/library/dd783604(v=VS.100).aspx

源代码下载

Win7TaskbarDemo.VS2010.zip

http://chatgpt.dhexx.cn/article/blhLLWFh.shtml

相关文章

HTML+CSS提升小实战

1 <html>2 <head>3 <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />4 <title>几米简介</title>5 <style type"text/css">6 *{7 margin:0px;padding:0px;8 …

java实现qlearning,DQN(Deep Q-learning)入门教程(一)之强化学习介绍

什么是强化学习? 强化学习(Reinforcement learning,简称RL)是和监督学习,非监督学习并列的第三种机器学习方法,如下图示: 首先让我们举一个小时候的例子: 你现在在家,有两个动作选择:打游戏和读书。如果选择打游戏的话,你就跑到了网吧,选择读书的话,就坐在了书桌面前…

实验一 书桌

实验内容&#xff1a; 了解四种视图&#xff0c;在绘制时&#xff0c;从不同的视图进行观察&#xff0c;提高绘制效率。知道常用工具的快捷键 一、四种视图 1、顶视图&#xff08;T&#xff09; 2、前视图&#xff08;F&#xff09; 3、左视图&#xff08;L&#xff09; 4、透…

学计算机的桌面,三个软件,干净你的电脑桌面,让你更高效工作学习!

文 | 谦行公子 首发 | 谦行公子 今天向大家推荐三个软件&#xff0c;为了就是让大家都拥有一个干净整洁的桌面&#xff0c;从此高效地学习生活&#xff5e;至于哪三个&#xff0c;接着看 相信很多人都有这样的经历&#xff0c;连续工作好几天甚至好几周&#xff0c;桌面上堆满…

小Q书桌 - 最完美纯净的任务栏Bins

虽然&#xff0c;TX 在众多网友的 眼中 都是山寨的代名词&#xff0c;都曾经很BS之。 诚然&#xff0c;鄙人也是对其某些作品不太满意。 但是&#xff0c;TX 仍有那么一些人再默默坚持着&#xff0c;给我们纯净的软件&#xff0c;纯净的视觉盛宴。 ……………………………………

【电脑管家之小Q书桌】

前言&#xff1a; 生活之中处处有知识&#xff0c;前几天&#xff0c;自己电脑无意间弹出了广告&#xff0c;心想&#xff0c;难道是最近重装了系统&#xff0c;电脑管家防广告功能关闭了&#xff0c;于是就去看了电脑管家&#xff0c;一切设置好后&#xff0c;一个好奇心又引导…

小Q书桌的下载、安装和使用

最近&#xff0c;无意之间&#xff0c;在某大牛电脑里&#xff0c;使用到了这款软件。感谢&#xff01; 确实&#xff0c;挺实用和方便的&#xff0c;强烈推荐&#xff01;&#xff01;&#xff01; 1、 下载 http://qdesk.qq.com/ 2、 安装 3、 使用 多么方便啊&#xff01…

腾讯小Q书桌图标怎么实现的啊?

Win7&#xff1a; 红色区域&#xff1a;类名是Shell_TrayWnd的容器 黄色区域&#xff1a;类名是ReBarWindow32的二级容器 绿色区域&#xff1a;类名是MSTaskSwWClass的窗口 WinXP&#xff1a; 红色区域&#xff1a;红色区域——类名是Shell_TrayWnd的容器…

小Q书桌支持WIN10完美运行 关于win10不兼容小q书桌

原文出处: https://zhuanlan.zhihu.com/p/62378877 背景&#xff1a; 小Q书桌是一款简洁易用的桌面图标管理工具&#xff0c;几年前就开始使用。 由于win10的普及&#xff0c;目前更换为win10系统&#xff0c;但由于小Q书桌已经很多年没更新&#xff0c;导致出现以下兼容问题&a…

小i机器人伴侣_【数据分析】2020年3月全国工业机器人产量统计数据分析

前 言 据中商产业研究院数据库显示&#xff0c;2020年1季度全国工业机器人产量波动幅度较小&#xff0c;2020年3月全国工业机器人产量为17241套&#xff0c;同比增长12.9%。2020年1季度全国工业机器人产量为34645.3套&#xff0c;同比下降8.2%。 数据来源&#xff1a;中商产业…

一个眼神 比亚迪车载机器人为你点歌

无论是通过触摸屏还是语音控制&#xff0c;车载系统的目的都是为了提供更多驾驶乐趣。在北京车展上&#xff0c;比亚迪推出“秦”电动车&#xff0c;其仪表台上配备的“i”机器人可通过表情、动作和语音和驾驶者互动&#xff0c;提供多种服务。 这个小机器人采用了一个微笑的卡…

聊天机器人的“高情商”炼成术

聊天机器人&#xff0c;是一种通过自然语言模拟人类进行对话的程序。通常运行在特定的软件平台上&#xff0c;如PC平台或者移动终端设备平台&#xff0c;而类人的硬件机械体则不是必需的承载设备。 聊天机器人的研究源于图灵(Alan M. Turing)在1950年《Mind》上发表的文章《Com…

中国机器人市场增速震惊全世界!这6大机器人你听过几个?

人工智能的火爆&#xff0c;让机器人创业的浪潮广泛引起了企业的关注&#xff0c;很多企业选择了或投资或自己研发的方式加入这场狂欢&#xff0c;这对于行业整体的发展来说是良性的&#xff0c;各大企业的加入&#xff0c;它们丰富的资源可以推动机器人行业的快速发展。 那么&…

机器人跟踪_使用手机和机器学习跟踪睡眠

机器人跟踪 The code project can be found on https://github.com/josephbima/sleep-tracker 该代码项目可在https://github.com/josephbima/sleep-tracker上找到 I’ve always wondered the exact time I actually spend sleeping at night. So when I needed ideas for the …

活动 | 腾讯×Nature Research:提问AI与机器人的未来

「 42. 」 这是科幻小说《银河系漫游指南》中智能计算机「Deep Thought&#xff08;深思&#xff09;」经过750万年运算&#xff0c;找到的「关于生命&#xff0c;宇宙及一切问题的终极答案」。 为什么是42&#xff1f;「深思」把这个问题交给了一台更高智能的电脑——地球来回…

机器人影视对接_机器学习对接会

机器人影视对接 A simple question like ‘How do you find a compatible partner?’ is what pushed me to try to do this project in order to find a compatible partner for any person in a population, and the motive behind this blog post is to explain my approac…

【AI视野·今日Robot 机器人论文速览 第十六期】Tue, 29 Jun 2021

AI视野今日CS.Robotics 机器人学论文速览 Tue, 29 Jun 2021 Totally 28 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers If you trust me, I will trust you: the role of reciprocity in human-robot trust Authors Joshua Zonca, Anna Folso, Ale…

[Linux]基于网络编程的智能机器小伴侣

目录 1 项目描述2 项目需求3 搭建环境4 技术描述5 概要设计6 GIF表情切换7 机器人智能回答8 城市天气查询9 在线播放音乐10 播放网站视频11 查看网页照片12 项目总结 1 项目描述 本次项目是基于Linux环境的交叉编译arm-linux-gcc&#xff0c;在GEC6818arm开发板上运行&#xf…

【AI视野·今日Robot 机器人论文速览 第十三期】Wed, 23 Jun 2021

AI视野今日CS.Robotics 机器人学论文速览 Wed, 23 Jun 2021 Totally 14 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Analysis of Executional and Procedural Errors in Dry-lab Robotic Surgery Experiments Authors Kay Hutchinson, Zongyu L…

为什么你买不到一台好用的机器人?因为没有你的代码

今天&#xff0c;我们来说说机器人吧。 这两年&#xff0c;市场上涌现了大量的机器人产品&#xff0c;甚至有人形机器人不断惊艳人的眼球。 毫无疑问&#xff0c;机器人未来会像汽车、手机一样普及&#xff0c;它们会成为我们家庭的一员&#xff0c;成为我们贴身的小伙伴。 然而…