Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows 7系統教程 >> win7系統基礎知識 >> Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

日期:2017/1/24 14:54:20      編輯:win7系統基礎知識

本篇我們開始介紹任務欄的另一個亮點:跳轉列表(Jump Lists,下文簡稱JL)。JL 可以使用戶方便快捷的找到想要浏覽的文件(文檔、圖片、音頻或視頻等)以及應用程序的鏈接或快捷方式。以IE 浏覽器為例看看JL 都具備哪些功能:

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

· 在紅色區域“Taskbar Tasks” 放置了應用程序的一些默認任務:“打開IE 浏覽器”、“從任務欄取消固定”、“關閉程序”。無論是否對JL 做過開發“Taskbar Tasks” 列表都會出現在所有的應用程序中,例如之前的實例程序(如下圖)。

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

· “User Tasks” 包含了應用程序本身提供的一些功能,通過這些鏈接可以直接對應用程序進行操作。例如,打開一個新IE 標簽。

· “Known Category” 這個列表是Windows 7 默認類別,其中包含三種模式:“Recent”(近期浏覽)、“Frequent”(經常浏覽)、“Neither”。下圖即為Frequent 模式,它的功能是將經常浏覽的網頁內容記錄下來以便日後再次浏覽,隨著時間的流逝該列表中的網頁鏈接會隨之變化或消失。除了“Known Category” 列表外同樣也以創建“Custom Category”(下文將會慢慢講到)。

· “Pinned Category” 正如上面所講“Frequent Category” 列表中的網頁會經常變化,通過右鍵將網頁“釘”在列表中可使其永久保存(如下圖)。

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

創建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 內容(如下效果圖)。

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

創建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 效果:

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

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 後的效果:

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

創建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(); 
 } 
}

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)      

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

KnownCategoryOrdinalPosition效果

在上面代碼中IconReference 取自應用程序本身的Icon 屬性,前提是需要在應用程序屬性中為其設置圖標資源(如下圖所示)。至此,在Windows 7 中對任務欄的相關開發已全部完成,希望本系列對大家有所幫助。

Windows 7 任務欄開發 之 跳轉列表(Jump Lists)

Copyright © Windows教程網 All Rights Reserved