日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Jumplist—Win 7與VS2010華麗共舞的平臺

新的特性,讓我們的操作系統(tǒng)及其以此為平臺的各種應(yīng)用程序更加易用,更加強(qiáng)大。而作為Windows平臺的開發(fā)人員,新操作系統(tǒng)的到來則為我們帶來了更多的機(jī)會,我們可以借助新的操作系統(tǒng)的各種新特性,讓我們的應(yīng)用程序更加易用,更加強(qiáng)大,更有利于提高用戶的生產(chǎn)效率;同時(shí)新的操作系統(tǒng)也給我們帶來更多的挑戰(zhàn),我們每個(gè)開發(fā)者都在考慮自己開發(fā)的應(yīng)用程序是不是“Ready for Windows 7”?是否跟新的操作系統(tǒng)兼容?是否能夠利用新的操作系統(tǒng)的各種新特性?為Windows 7開發(fā)應(yīng)用程序,成為我們面前的一個(gè)新的課題。

另外,伴隨著Visual Studio 2010 beta1的發(fā)布,下一代基于Windows的應(yīng)用程序開發(fā)平臺已經(jīng)初具雛形:Windows 7 + Visual Studio 2010。這里,我們就基于這一全新的開發(fā)平臺,為即將到來的Windows 7開發(fā)應(yīng)用程序。

在Windows 7 RC中,我們可能最先發(fā)現(xiàn)的就是它的界面更加華麗,易用性進(jìn)一步提高了。其中最引人矚目的就是它所帶來的革命性的新任務(wù)欄。在這個(gè)全新設(shè)計(jì)的任務(wù)欄中,我們可以運(yùn)行各種應(yīng)用程序;在應(yīng)用程序之間進(jìn)行快速切換或者是在同一個(gè)應(yīng)用程序中的不同頁面之間切換;管理最新文檔/最常用的文檔;訪問通用的應(yīng)用程序任務(wù);向用戶報(bào)告程序的進(jìn)度和狀態(tài)等等。通過這些豐富的功能,新的任務(wù)欄給Windows 7應(yīng)用程序的執(zhí)行帶來了極大的便利,對用戶更加友好。所以,讓我們的應(yīng)用程序支持新的任務(wù)欄,可以說是讓我們的應(yīng)用程序“Ready for Windows 7”的第一步。

Windows 7中的任務(wù)欄主要包括這些新特性:可以快速執(zhí)行任務(wù)或者打開文檔的Jumplist;實(shí)時(shí)的應(yīng)用程序預(yù)覽以及應(yīng)用程序進(jìn)度和狀態(tài)報(bào)告。在本文中,我們首先讓應(yīng)用程序可以支持Jumplist功能,實(shí)現(xiàn)從Vista到Windows 7的Jump!

Jumplist概述

Jumplist實(shí)際上是任務(wù)欄圖標(biāo)的右鍵菜單。任務(wù)欄圖標(biāo)的右鍵菜單很早就有了,但是都只是提供一些簡單的窗口管理功能,比如窗口的關(guān)閉,最小化,恢復(fù)等等。在Windows 7中,微軟引入了任務(wù)欄圖標(biāo)Jumplist的概念,從Jumplist的表現(xiàn)形式來看,它實(shí)際上就像一個(gè)Mini版的開始菜單,只是通常意義上的開始菜單是針對整個(gè)操作系統(tǒng),而Jumplist則是針對單個(gè)應(yīng)用程序。通過Jumplist,我們可以快速地訪問應(yīng)用程序的各種最常用功能。比如通過Word 2007的Jumplist,我們可以直接打開最近打開過的文檔,運(yùn)行Word應(yīng)用程序,將文檔/應(yīng)用程序固定在任務(wù)欄上等等。對于我們開發(fā)的應(yīng)用程序,還可以添加更多的自定義任務(wù)。


圖1  Jumplist是Mini開始菜單

為了更好地理解并為我們自己的應(yīng)用程序創(chuàng)建Jumplist,我們來分析一下Jumplist所包含的內(nèi)容。在下圖中我們可以看到,Jumplist主要包含了兩項(xiàng):目標(biāo)(名詞)和任務(wù)(動詞)。其中目標(biāo)包含最新使用和最常使用的文檔。為了便于管理,我們還可以將這些文檔進(jìn)行進(jìn)一步的分類,甚至創(chuàng)建自己的自定義分類等。而Jumplist中的任務(wù)則是指跟此應(yīng)用程序相關(guān)的各項(xiàng)動作,比如執(zhí)行某個(gè)相關(guān)的應(yīng)用程序,執(zhí)行應(yīng)用程序的某些常用操作等等。這樣,我們在執(zhí)行應(yīng)用程序的一些最常用的動作的時(shí)候,就無需切換到應(yīng)用程序界面而直接從Jumplist執(zhí)行就可以了,這就為快速訪問應(yīng)用程序功能帶來了極大的便利,從而提高用戶的生產(chǎn)效率。


圖2  Jumplist詳解

既然Jumplist如此威力強(qiáng)大,下面我們就來為我們自己的應(yīng)用程序添加Jumplist支持。在本文中,我們將創(chuàng)建一個(gè)簡易的圖片查看應(yīng)用程序,然后為其添加一個(gè)Jumplist功能,從Jumplist中訪問最新的文檔和打開畫圖程序等等。

首先我們啟動Visual Studio 2010,然后創(chuàng)建一個(gè)C#的Windows Form應(yīng)用程序并且將界面編輯如下:


圖3  簡易圖片查看器

其中,我們使用一個(gè)按鈕“注冊擴(kuò)展名”來注冊擴(kuò)展名,將這個(gè)應(yīng)用程序跟某種文件后綴相互關(guān)聯(lián)。而另外一個(gè)“打開文件”按鈕可以調(diào)用通用的文件打開對話框載入圖片。最后,我們使用一個(gè)PictureBox控件來顯示圖片。

為了實(shí)現(xiàn)Windows 7上的任務(wù)欄編程,我們必須首先添加項(xiàng)目對Windows7.DesktopIntegration.dll,

Windows7.DesktopIntegration.RegistrationHelper.exe和VistaBridgeLibrary.dll的引用。這些DLL,那你可以從微軟的網(wǎng)站上獲得。利用這幾個(gè)程序集所提供的輔助功能,我們就能很方便地實(shí)現(xiàn)任務(wù)欄的編程開發(fā)。


圖4  添加對DLL的引用

展開全部  文本Tag: Visual Studio 應(yīng)用程序 微軟 c# .NET Framework 軟件開發(fā) windows 7

注冊應(yīng)用程序ID(Application ID)和文件擴(kuò)展名

為了對任務(wù)欄中停留的各種應(yīng)用程序進(jìn)行分組,在Windows 7中,操作系統(tǒng)新引入了應(yīng)用程序ID(Application ID)的概念。應(yīng)用程序ID(Application ID)是用來標(biāo)示各個(gè)應(yīng)用程序的,它并不是我們常見的GUID,而是一個(gè)少于128個(gè)字符的字符串。默認(rèn)情況下,應(yīng)用程序的ID是由操作系統(tǒng)根據(jù)進(jìn)程名計(jì)算而得的,當(dāng)然,我們也可以人為地為應(yīng)用程序指定Application ID。在Windows 7中,很多地方都會用到應(yīng)用程序ID,比如進(jìn)程,窗口,任務(wù)欄按鈕等等。

圖5  應(yīng)用程序ID

在Windows 7的任務(wù)欄中,它根據(jù)各個(gè)應(yīng)用程序的ID對其進(jìn)行分組。同時(shí),為了對應(yīng)用程序的Jumplist進(jìn)行自定義,我們需要人為的設(shè)置應(yīng)用程序的Application ID。

我們搜先為窗體添加窗體加載函數(shù)Form1_Load(),然后在窗體的加載函數(shù)中,我們設(shè)置應(yīng)用程序的ID如下:

 
 
 
 
  1. private const string APP_ID = "WindowsSeven.Taskbar.JumplistDemo";  
  2. private void Form1_Load(object sender, EventArgs e)  
  3. {  
  4. // 設(shè)置用用程序ID  
  5. Windows7Taskbar.SetCurrentProcessAppId(APP_ID);  
  6. // …  

#p#

使用通用的Jumplist功能

完成應(yīng)用程序ID的注冊后,我們就像擁有了應(yīng)用程序的身份證,可以開始對應(yīng)用程序進(jìn)行操作了。Windows 7操作系統(tǒng)為任務(wù)欄提供了很多通用的功能,比如如果我們使用通用的文件打開對話框打開過某個(gè)文件,那么它就會自動將我們打開的文件添加到應(yīng)用程序的Jumplist中。為了利用這些Windows 7提供給我們的通用任務(wù)欄功能,我們需要注冊文件擴(kuò)展名,將某個(gè)特定的文件擴(kuò)展名跟我們的應(yīng)用程序綁定在一起,這樣,當(dāng)我們在應(yīng)用程序中打開這種類型的文件后,文件就會出現(xiàn)在應(yīng)用程序的Jumplist中。首先,我們?yōu)椤白詳U(kuò)展名”按鈕添加點(diǎn)擊動作響應(yīng)函數(shù)并實(shí)現(xiàn)如下:

 
 
 
 
  1. private void RegisterAssociation_Click(object sender, EventArgs e)  
  2. {  
  3. // 注冊擴(kuò)展名,實(shí)現(xiàn)文件關(guān)聯(lián)  
  4. RegistrationHelper.RegisterFileAssociations(  
  5. APP_ID, false, Windows7Taskbar.GetCurrentProcessAppId(),  
  6. Assembly.GetExecutingAssembly().Location + " /doc:%1",  
  7. ".jpg");   

在這段代碼中,我們利用RegistrationHelper將“.jpg”跟我們的應(yīng)用程序綁定在一起了,當(dāng)我們在應(yīng)用程序中使用通用對話框打開這種類型的文件時(shí),操作系統(tǒng)會自動將這些最近打開的文檔添加到應(yīng)用程序的Jumplist中。

接下來,我們利用通用文件對話框打開圖片文件并將其顯示到界面上。將“打開文件”按鈕的點(diǎn)擊命令函數(shù)實(shí)現(xiàn)如下:

 
 
 
 
  1. private void LoadPic_Click(object sender, EventArgs e)  
  2. {  
  3. // 調(diào)用通用打開文件對話框打開圖片文件  
  4. OpenFileDialog ofd = new OpenFileDialog();  
  5. if (ofd.ShowDialog() != DialogResult.OK)  
  6. return;  
  7. // 將圖片顯示到界面上  
  8. pictureBox1.ImageLocation = ofd.FileName;  

現(xiàn)在,我們就可以編譯運(yùn)行整個(gè)解決方案。首先我們點(diǎn)擊“注冊擴(kuò)展名”按鈕,進(jìn)行文件擴(kuò)展名的注冊。然后,通過“打開文件”按鈕,我們打開一個(gè)jpg后綴的圖片文件并將其顯示到界面上。

 圖6,Jumplist中最近打開的文檔

這時(shí)我們就可以在應(yīng)用程序的Jumplist中看到我們最近打開的文件了。只需要簡單的幾行代碼,我們就實(shí)現(xiàn)了Jumplist的功能,為應(yīng)用程序添加Jumplist是不是非常簡單呢?

有時(shí)候,我們還希望將一些特殊的常用文件添加到Jumplist中,不管這個(gè)文件是否曾經(jīng)打開過。這時(shí),我們借助JumpListManager類可以將特定的文檔添加到Jumplist中。例如:

 
 
 
 
  1.  private void LoadPic_Click(object sender, EventArgs e)  
  2. {  
  3. // 將特定文檔添加到Jumplist的“最近打開”  
  4. JumpListManager jlm = new JumpListManager(APP_ID);  
  5. jlm.UserRemovedItems += delegate { };  
  6. jlm.AddToRecent("DemoPicture.jpg");  

在這段代碼中,我們創(chuàng)建了一個(gè)JumpListManager類的實(shí)例并利用應(yīng)用程序ID進(jìn)行初始化。然后我們就可以將自定義的文檔添加到Jumplist的“最新打開”目錄下了。

 從Jumplist打開最新文檔

現(xiàn)在,我們就點(diǎn)擊應(yīng)用程序的Jumplist中的“最近打開”的文件,我們可以發(fā)現(xiàn)當(dāng)我們點(diǎn)擊文件后,雖然應(yīng)用程序啟動了,但是文件并沒有被加載進(jìn)來。所以,我們還需要對窗體的加載函數(shù)進(jìn)行修改,讓它可以支持從Jumplist打開文檔:

 
 
 
 
  1. private const string APP_ID = "WindowsSeven.Taskbar.JumplistDemo";  
  2. private void Form1_Load(object sender, EventArgs e)  
  3. {  
  4. // 注冊應(yīng)用程序ID  
  5. Windows7Taskbar.SetCurrentProcessAppId(APP_ID);   
  6.  
  7. // 判斷命令行是否包含“/doc”  
  8. if (Environment.CommandLine.Contains("/doc"))  
  9. {  
  10. // 從命令行中提取文件路徑  
  11. string doc = Environment.CommandLine.Substring(  
  12. Environment.CommandLine.IndexOf("/doc") +  
  13. "/doc".Length + 1);  
  14.  
  15. pictureBox1.ImageLocation = doc;  
  16. }  
  17. }  

經(jīng)過這樣的修改,當(dāng)我們從Jumplist打開文檔時(shí),窗體在加載的時(shí)候,就會從命令行字符串中提取我們點(diǎn)擊的文件的路徑并打開顯示到窗體界面中。

添加自定義任務(wù)

現(xiàn)在,我們已經(jīng)知道如果為應(yīng)用程序的Jumplist添加目標(biāo)了,接下來,我們將介紹如何為Jumplist添加一個(gè)任務(wù),完成各種跟應(yīng)用程序相關(guān)的動作。

既然我們開發(fā)的是一個(gè)簡易的圖片瀏覽程序,很多時(shí)候,我們可能希望可以打開Windows的畫圖程序?qū)D片進(jìn)行編輯。為了用戶可以快速打開畫圖程序,我們將它添加到自定義任務(wù)中。同時(shí),我們也可以在自定義任務(wù)中添加其他的文檔。比如,我們有幾張需要經(jīng)常參考的色標(biāo)圖,這時(shí)我們就可以在Jumplist中新創(chuàng)建一個(gè)“色標(biāo)”分類,然后將這些色標(biāo)圖添加到這個(gè)分類中。

為了完成上面的兩個(gè)功能,我們需要“Windows 7 Bridge Sample”所提供的JumpListManager類。首先我們在窗體類中聲明一個(gè)JumpListManager類的對象,然后我們重載窗體的WndProc函數(shù)并將其實(shí)現(xiàn)如下:

 
 
 
 
  1. JumpListManager _jumpListManager;  
  2. protected override void WndProc(ref Message m)  
  3. {  
  4. if (m.Msg == Windows7Taskbar.TaskbarButtonCreatedMessage)  
  5. {  
  6. // 創(chuàng)建對象并利用應(yīng)用程序ID對其進(jìn)行初始化  
  7. _jumpListManager = new JumpListManager(APP_ID);  
  8. _jumpListManager.UserRemovedItems += delegate { };  
  9.  
  10. // 構(gòu)造一個(gè)ShellLink,添加為任務(wù)  
  11. _jumpListManager.AddUserTask(new ShellLink  
  12. {  
  13. PathPath = Path.Combine(Environment.GetFolderPath(  
  14. Environment.SpecialFolder.System),   
  15. @"mspaint.exe"),  
  16. Title = "啟動Windows畫圖工具" 
  17. });  
  18.  
  19. // 添加自定義目標(biāo)文件  
  20. _jumpListManager.AddCustomDestination(new ShellItem  
  21. {  
  22. Path = Directory.GetParent(  
  23. Assembly.GetExecutingAssembly().Location) +  
  24. @"\ColorTab.jpg",  
  25. Category = "色標(biāo)文件" 
  26. });   
  27. _jumpListManager.Refresh();  

在上面的代碼中,我們利用JumpListManager類為Jumplist添加了自定義的用戶任務(wù),同時(shí)添加了一個(gè)自定義的文檔分類并添加了相應(yīng)的內(nèi)容?,F(xiàn)在編譯執(zhí)行解決方案,就可以看到效果了。


圖7  自定義任務(wù)

通過對Jumplist的編程開發(fā),我們實(shí)現(xiàn)了在文檔之間的跳轉(zhuǎn)和功能任務(wù)之間的跳轉(zhuǎn),從此再也不用為打開某個(gè)常用文檔或者常用功能而在程序菜單中迷茫了。

Let’s Jump!

【編輯推薦】

  1. Visual Studio 2010爆F(xiàn)#二進(jìn)制兼容性問題
  2. 推薦Visual Studio 2010中F#的一些資源
  3. Visual Studio 2010 Beta1試用手記
  4. Visual Studio 2010重要新功能一覽
  5. 微軟發(fā)布Visual Studio 2010 Beta 1

網(wǎng)站題目:Jumplist—Win 7與VS2010華麗共舞的平臺
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/cdcepde.html