博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows 7 任务栏开发 之 跳转列表(Jump Lists)
阅读量:5798 次
发布时间:2019-06-18

本文共 4466 字,大约阅读时间需要 14 分钟。

   本篇我们开始介绍任务栏的另一个亮点:跳转列表(,下文简称JL)。JL 可以使用户方便快捷的找到想要浏览的文件(文档、图片、音频或视频等)以及应用程序的链接或快捷方式。以IE 浏览器为例看看JL 都具备哪些功能:

iejumplist_thumb_1.png

 

       · 在红色区域“Taskbar Tasks” 放置了应用程序的一些默认任务:“打开IE 浏览器”、“从任务栏取消固定”、“关闭程序”。无论是否对JL 做过开发“Taskbar Tasks” 列表都会出现在所有的应用程序中,例如之前的实例程序(如下图)。

demo_thumb.png

       · “User Tasks” 包含了应用程序本身提供的一些功能,通过这些链接可以直接对应用程序进行操作。例如,打开一个新IE 标签。

       · “Known Category” 这个列表是Windows 7 默认类别,其中包含三种模式:“Recent”(近期浏览)、“Frequent”(经常浏览)、“Neither”。下图即为Frequent 模式,它的功能是将经常浏览的网页内容记录下来以便日后再次浏览,随着时间的流逝该列表中的网页链接会随之变化或消失。除了“Known Category” 列表外同样也以创建“Custom Category”(下文将会慢慢讲到)。

       · “Pinned Category” 正如上面所讲“Frequent Category” 列表中的网页会经常变化,通过右键将网页“钉”在列表中可使其永久保存(如下图)。

pin_thumb.png

 

创建User Tasks 列表

      现在是不是也想为自己的程序添加一个JL,下面先来介绍如何创建User Tasks 列表。1. 通过JumpList 类创建一个JL 实例。2. 使用JumpListLink(string pathValue, string titleValue) 方法(pathValue:应用程序路径,titleValue:链接名称),可以将“记事本”、“画板”这样的Windows 应用程序,以及“网站地址”创建为User Tasks 链接。3. 再使用AddUserTasks(params IJumpListTask[] tasks) 方法将这些链接添加到JL 中。如下代码所示:

private JumpList jumpList; private string systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);private void addApps_Click(object sender, RoutedEventArgs e){   IJumpListTask notepadTask = new JumpListLink(Path.Combine(systemPath, "notepad.exe"), "Notepad")   {      IconReference = new IconReference(Path.Combine(systemPath, "notepad.exe"), 0)   };   IJumpListTask paintTask = new JumpListLink(Path.Combine(systemPath, "mspaint.exe"), "Paint")   {      IconReference = new IconReference(Path.Combine(systemPath, "mspaint.exe"), 0)   };   IJumpListTask jlSeparator = new JumpListSeparator();   IJumpListTask linkTask = new JumpListLink("http://gnielee.cnblogs.com", "Gnie's Blog")   {      IconReference = new IconReference("C:\\Program Files\\Internet Explorer\\iexplore.exe", 0)   };   jumpList.AddUserTasks(notepadTask, paintTask, jlSeparator, linkTask);   jumpList.Refresh();}

       在上面程序中,通过IJumpListTask 接口创建了“程序链接”(JumpListLink,其中IconReference 为链接图标)和“分割线”(JumpListSeparator);使用AddUserTasks 方法时注意每个链接的位置关系;最后必须使用Refresh 方法对JL 进行刷新才能显示出最新的JL 内容(如下效果图)。

usertasks_thumb.png

 

创建Known Category 列表

       在使用Known Category 功能前,需要先为程序注册文件类型,随后可通过KnownCategoryToDisplay 属性将Known Category 预设为“Recent”、“Frequent”、“Neither” 中的任意一种类型,当测试程序打开某个的文件时,相应的文件链接就会显示在Known Category 列表中。如下代码所示:

if (!Utilities.IsApplicationRegistered(TaskbarManager.Instance.ApplicationId)){   Utilities.RegisterFileAssociations(TaskbarManager.Instance.ApplicationId, false,        TaskbarManager.Instance.ApplicationId, Assembly.GetExecutingAssembly().Location,        ".jpg", ".png", ".gif", ".JPG", ".PNG", ".GIF");}jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;CommonOpenFileDialog cfd = new CommonOpenFileDialog();cfd.ShowDialog();jumpList.Refresh();

打开demo.png 文件后的JL 效果:

recent_thumb.png

 

       JumpListKnownCategoryType 枚举中定义了Known Category 的三种类型:“Neither”、“Recent”、“Frequent”,还可以通过KnownCategoryOrdinalPosition 属性可以修改Known Category 在JL 中的位置:

switch (this.knownCategory.SelectionBoxItem.ToString()){   case "None":        jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Neither;        break;   case "Recent":        jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;        break;   case "Frequent":        jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Frequent;        break;}jumpList.KnownCategoryOrdinalPosition = Convert.ToInt32(this.categoryPostion.SelectionBoxItem.ToString());jumpList.Refresh();

将Recent 修改为Frequent 后的效果:

frequent_thumb.png

 

创建Custom Category 列表

       如同上文创建JumpList 的方式,1. 通过JumpListCustomCategory 类创建“自定义分类”列表实例。2. 由JumpListCustomCategory(string categoryName) 方法为列表命名。3. 使用AddJumpListItems 方法将链接加入到分类中。如下代码所示:

private JumpListCustomCategory customCategory;private void addCus_Click(object sender, RoutedEventArgs e){  if (this.categoryName.Text.Length > 0)  {     customCategory = new JumpListCustomCategory(this.categoryName.Text);     jumpList.AddCustomCategories(customCategory);     JumpListLink jlItem = new JumpListLink(Assembly.GetExecutingAssembly().Location, this.categoryName.Text + ".png")     {        IconReference = new IconReference(Assembly.GetEntryAssembly().Location, 0)     };     customCategory.AddJumpListItems(jlItem);     jumpList.Refresh();  }}

customcategory_thumb.png       change_thumb.png  

                                                                   KnownCategoryOrdinalPosition效果

 

       在上面代码中IconReference 取自应用程序本身的Icon 属性,前提是需要在应用程序属性中为其设置图标资源(如下图所示)。至此,在Windows 7 中对任务栏的相关开发已全部完成,希望本系列对大家有所帮助。

iconres_thumb.png

 

系列文章索引

· 

· 

· 

· 

 

相关参考资料

1. Jump into the Windows 7 Taskbar Jump Lists 

2. Windows 7 Jump Lists 

3. IconReference – Using own icons 

 

完整源代码下载

本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2010/03/16/windows7-taskbar-jumplists.html,如需转载请自行联系原作者
你可能感兴趣的文章
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>
微信公众号
查看>>
POJ1061 青蛙的约会(扩展欧几里得)题解
查看>>
关于Android studio团队协同开发连接到已有项目
查看>>
Sql获取表的信息
查看>>
Java-大数据-图汇集
查看>>