添加自定义任务
现在,我们已经知道如果为应用程序的Jumplist添加目标了,接下来,我们将介绍如何为Jumplist添加一个任务,完成各种跟应用程序相关的动作。
既然我们开发的是一个简易的图片浏览程序,很多时候,我们可能希望可以打开Windows的画图程序对图片进行编辑。为了用户可以快速打开画图程序,我们将它添加到自定义任务中。同时,我们也可以在自定义任务中添加其他的文档。比如,我们有几张需要经常参考的色标图,这时我们就可以在Jumplist中新创建一个“色标”分类,然后将这些色标图添加到这个分类中。
为了完成上面的两个功能,我们需要“Windows 7 Bridge Sample”所提供的JumpListManager类。首先我们在窗体类中声明一个JumpListManager类的对象,然后我们重载窗体的WndProc函数并将其实现如下:
JumpListManager _jumpListManager;
protected override void WndProc(ref Message m)
{
if (m.Msg == Windows7Taskbar.TaskbarButtonCreatedMessage)
{
// 创建对象并利用应用程序ID对其进行初始化
_jumpListManager = new JumpListManager(APP_ID);
_jumpListManager.UserRemovedItems += delegate { };
// 构造一个ShellLink,添加为任务
_jumpListManager.AddUserTask(new ShellLink
{
Path = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.System),
@"mspaint.exe"),
Title = "启动Windows画图工具"
});
// 添加自定义目标文件
_jumpListManager.AddCustomDestination(new ShellItem
{
Path = Directory.GetParent(
Assembly.GetExecutingAssembly().Location) +
@"\ColorTab.jpg",
Category = "色标文件"
});
_jumpListManager.Refresh();
}
protected override void WndProc(ref Message m)
{
if (m.Msg == Windows7Taskbar.TaskbarButtonCreatedMessage)
{
// 创建对象并利用应用程序ID对其进行初始化
_jumpListManager = new JumpListManager(APP_ID);
_jumpListManager.UserRemovedItems += delegate { };
// 构造一个ShellLink,添加为任务
_jumpListManager.AddUserTask(new ShellLink
{
Path = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.System),
@"mspaint.exe"),
Title = "启动Windows画图工具"
});
// 添加自定义目标文件
_jumpListManager.AddCustomDestination(new ShellItem
{
Path = Directory.GetParent(
Assembly.GetExecutingAssembly().Location) +
@"\ColorTab.jpg",
Category = "色标文件"
});
_jumpListManager.Refresh();
}
在上面的代码中,我们利用JumpListManager类为Jumplist添加了自定义的用户任务,同时添加了一个自定义的文档分类并添加了相应的内容。现在编译执行解决方案,就可以看到效果了。
图7 自定义任务
通过对Jumplist的编程开发,我们实现了在文档之间的跳转和功能任务之间的跳转,从此再也不用为打开某个常用文档或者常用功能而在程序菜单中迷茫了。
Let’s Jump!