日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Windows 7 任務欄開發之覆蓋圖標(Overlay Icon)

瀏覽:26日期:2023-05-31 15:23:35

當第一次使用Windows 7 時,任務欄(Taskbar)的改變可以說讓我眼前一亮。在以前版本Windows 桌面功能的基礎上,Windows 7 任務欄為我們增添了許多其他功能:Jump Lists,Window PrevIEw,Process Bar,Overlay Icon 等等。

新任務欄的功能使我們的操作更加方便快捷,在參加北京.Net俱樂部舉辦的“Windows 7 發布活動時初步了解到有關應用程序支持Windows 7 任務欄特性方面的內容。那么作為一名開發人員我們的應用程序能否實現這些功能呢?答案當然是“可以,微軟提供了方便的工具Windows API Code Pack for .NET Framework 來幫助我們完成這些開發。

本篇主要演示Overlay Icon(MSDN上直譯為“覆蓋圖標)的功能,從字面上來看也許不太明白這是什么意思,在Windows 7 中UAC 功能為系統增加了安全性,當UAC 啟動時有些應用程序的圖標上方會顯示一個盾牌標志(如下圖),沒錯這個就是Overlay Icon 功能,下面就來看看它是如何實現的。

準備工作

1. 添加一些Overlay Icon 圖片(.ico)到項目Resources 中。

2. 下載Windows API Code Pack,增加Microsoft.WindowsAPICodePack.dll 和Microsoft.WindowsAPICodePack.Shell.dll。

3. 引用Microsoft.WindowsAPICodePack.Taskbar 命名空間。

TaskbarManager.SetOverlayIcon(Icon, String) 方法

TaskbarManager 類提供了一些常用的任務欄特性設置方法,其中SetOverlayIcon 方法有三種不同的方式來設置Overlay Icon:

//用于應用程序主窗口 public void SetOverlayIcon(System.Drawing.Icon icon, string accessibilityText) { CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetOverlayIcon(OwnerHandle, icon != null ? icon.Handle : IntPtr.Zero, accessibilityText); }  //用于指定窗口 public void SetOverlayIcon(IntPtr windowHandle, System.Drawing.Icon icon, string accessibilityText) { CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetOverlayIcon(windowHandle, icon != null ? icon.Handle : IntPtr.Zero, accessibilityText); }  //用于指定的WPF窗口 public void SetOverlayIcon(System.Windows.Window window, System.Drawing.Icon icon, string accessibilityText) { CoreHelpers.ThrowIfNotWin7(); TaskbarList.SetOverlayIcon( (new WindowInteropHelper(window)).Handle, icon != null ? icon.Handle : IntPtr.Zero, accessibilityText); }

在程序中通過TaskbarManager.Instance.SetOverlayIcon() 即可實現Overlay Icon 效果:

Icon icon = iconList.SelectedItem as Icon; TaskbarManager.Instance.SetOverlayIcon(icon, 'Overlay Icon Demo');

如果將Icon 和 String 都設為Null 則取消Overlay Icon 效果:

TaskbarManager.Instance.SetOverlayIcon(null, null);

單窗口示例

程序運行后的狀態:

在圖標列表中選擇Overlay Icon 后的不同效果:

多窗口示例

在默認情況下,如果從父窗口中調出子窗口,其任務欄圖標是組合疊加在一起的(如下圖):

如果想為不同的窗口中實現Overlay Icon 則首先需要通過修改TestWindow 的Application ID (AppID)將兩個窗口的任務欄圖標分離開。每個運行的窗口都會有各自的AppID,用來決定任務欄圖標屬于哪個窗口。這也就是為什么當我們打開多個 Word 文檔或IE 標簽后任務欄圖標都是自動疊加在一起的,所以我們可以通過修改窗口的AppID 使任務欄圖標分開顯示。

通過使用TaskbarManager.SetApplicationIdForSpecificWindow(IntPtr windowHandle,String appID) 方法可以修改窗口的AppID。但是目前下載的Windows API 1.0.1 版本有些小問題,使得SetApplicationIdForSpecificWindow 方法根本不起作用。根源就在TaskbarNativeMethods.cs 的SetWindowProperty 方法,沒有對pv 進行任何賦值操作,導致propStore 根本沒有值,所以在該方法中增加pv.SetString(value),重新編譯并替換掉原來的 Microsoft.WindowsAPICodePack.Shell.dll 即可:

internal static void SetWindowProperty(IntPtr hwnd, PropertyKey propkey, string value) { // Get the IPropertyStore for the given window handle IPropertyStore propStore = GetWindowPropertyStore(hwnd);  // Set the value PropVariant pv = new PropVariant(); pv.SetString(value); propStore.SetValue(ref propkey, ref pv);  // Dispose the IPropertyStore and PropVariant Marshal.ReleaseComObject(propStore); pv.Clear(); }

程序改好后,就可以使用SetApplicationIdForSpecificWindow(IntPtr, String) 干活了:

Window newWindow = new TestWindow(); newWindow.Show(); WindowInteropHelper helper = new WindowInteropHelper(newWindow); IntPtr ptr = helper.Handle;TaskbarManager.Instance.SetApplicationIdForSpecificWindow(ptr, 'AppID');

修改了TestWindow 的AppID,兩個窗口的任務欄圖標才真正的完成了分離:

通過SetOverlayIcon(IntPtr, Icon, String) 來設置指定窗口(TestWindow)的Overlay Icon:

TaskbarManager.Instance.SetOverlayIcon(ptr, icon, 'Overlay Icon Demo');

分離后再來看看效果,只顯示MainWindow 圖標:

兩個窗口的圖標都顯示:

出處:http://www.cnblogs.com/gnIElee/

標簽: Windows系統
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线看片不卡| 色偷偷偷在线视频播放| 免费高潮视频95在线观看网站| 国产精品15p| 国产欧美亚洲一区| 国产日韩视频| 国产精品亚洲综合在线观看| 国产精品久久777777毛茸茸| 国产精品99久久免费观看| 国产福利亚洲| 麻豆成人综合网| 国产精品久久久久久久久妇女| 高潮久久久久久久久久久久久久| 国产va在线视频| 日韩精品影视| 五月天久久网站| 丝袜诱惑制服诱惑色一区在线观看| 另类国产ts人妖高潮视频| 丝袜美腿亚洲一区| 日本a口亚洲| 国产一区二区三区亚洲| 999国产精品视频| 一区二区视频欧美| 亚洲另类视频| 国产精品**亚洲精品| 国产在线看片免费视频在线观看| 韩国精品主播一区二区在线观看| 亚洲激情不卡| 69堂免费精品视频在线播放| 久久精品国产精品亚洲毛片| 国产亚洲一区二区手机在线观看| 日韩午夜在线| 欧美在线黄色| 精品久久91| 日韩视频在线一区二区三区| 日韩三级精品| 激情国产在线| 日韩视频久久| 国产精品久久久免费| 夜鲁夜鲁夜鲁视频在线播放| 亚洲少妇在线| 国产乱人伦丫前精品视频| 亚洲伦乱视频| 亚洲ww精品| 欧美xxxx中国| 性欧美长视频| 精品视频在线你懂得| 黄色成人91| 国产欧美日韩精品一区二区免费| 伊人久久国产| 日本一区二区三区中文字幕| 97人人精品| 亚洲精品乱码| 久久久久.com| 欧美日韩一区二区三区不卡视频 | 欧美日韩午夜| 久久久久久久久丰满| 午夜电影一区| 日韩三区免费| 久久激情五月激情| 国产精品字幕| 欧美久久精品| 亚洲女同中文字幕| 久久精品一区二区三区中文字幕| 国产亚洲一区在线| 国产在线视频欧美一区| 中文字幕免费一区二区| 中文字幕成在线观看| 日韩一区网站| 久久影院一区| 精品99久久| 日韩欧美美女在线观看| 91精品一区二区三区综合| 国产精品1区在线| 久久不射中文字幕| 国产一区二区色噜噜| 中文字幕一区二区av| 日韩中文影院| 另类欧美日韩国产在线| 久久亚洲欧美| 久久久久91| 国内自拍视频一区二区三区| 日韩黄色av| 亚洲深夜影院| 日韩精品影视| 国产一区二区久久久久| 91成人在线精品视频| 欧美专区一区二区三区| 亚洲视频综合| 午夜精品成人av| 国产精品va视频| 日韩1区2区3区| 免费看的黄色欧美网站| 激情自拍一区| 香蕉视频亚洲一级| 精品欧美日韩精品| 美日韩一区二区三区| 7m精品国产导航在线| 亚洲精品在线a| 免费在线欧美视频| 宅男噜噜噜66国产日韩在线观看| 新版的欧美在线视频| 精品国产欧美日韩| 美女久久精品| 麻豆精品新av中文字幕| 欧美欧美黄在线二区| 日本国产一区| 日韩精选在线| 亚州精品视频| 日韩激情啪啪| 欧美一级二区| 国产毛片精品| 国产乱码精品一区二区三区四区| 亚洲精品乱码日韩| 日韩精品一页| 欧美日韩18| 国产美女视频一区二区| 国产精品三p一区二区| 国产欧美在线| 国产精品日韩精品在线播放| 欧美日韩国产一区二区在线观看| 91成人福利| 麻豆一区二区三| 精品伊人久久久| 国产精品高颜值在线观看| 国产一区二区亚洲| 国产精品高颜值在线观看| 中文在线资源| 国产综合视频| 亚洲一区激情| 日韩专区视频网站| 欧美啪啪一区| 精品欧美日韩精品| 国产超碰精品| 欧美日韩国产免费观看| 伊人久久亚洲热| 蜜臀av一区二区三区| 日韩1区2区日韩1区2区| 国产美女久久| 国产va免费精品观看精品视频| 中文在线资源| 女同性一区二区三区人了人一| 免费观看在线综合色| 国产探花一区在线观看| 欧美国产一级| 国产精品88久久久久久| 亚洲免费毛片| 国产精品99精品一区二区三区∴| 国产精品成人一区二区不卡| 久久久久国产| 久久都是精品| 国产毛片精品| 蜜桃av在线播放| 丝袜国产日韩另类美女| 国产探花一区二区| 日本在线高清| 日本欧洲一区二区| 国产欧美一区二区色老头| 国产一区二区三区久久| 好看的av在线不卡观看| 日韩国产在线一| 国产999精品在线观看| 91成人精品视频| 国产日韩中文在线中文字幕 | 精品国产精品久久一区免费式 | 香蕉久久久久久久av网站| 欧美一级久久| а√在线中文在线新版| 性欧美长视频| 久久这里只有精品一区二区| 欧美精品一区二区三区精品| 欧美久久精品| 亚洲福利一区| 久久精品av麻豆的观看方式| 成人羞羞视频在线看网址| 综合激情婷婷| 97精品国产| 美女黄网久久| 国产一区二区三区不卡视频网站 | 国产麻豆久久| 天使萌一区二区三区免费观看| 国产欧美二区| 狠狠久久婷婷| 国产在线观看91一区二区三区| 香蕉成人久久| 91日韩在线| 日本三级亚洲精品| 五月婷婷亚洲| 黄色网一区二区| 亚洲人成高清| av高清不卡| 午夜天堂精品久久久久| 丝袜美腿诱惑一区二区三区| 91精品福利观看| 免费欧美一区| 免费一级欧美片在线观看网站 | 日韩精品免费一区二区三区| 欧美日韩亚洲一区在线观看| 香蕉精品视频在线观看| 久久精品国产久精国产爱|