Windows7 工作列工具列實現相關資料

來源:互聯網
上載者:User

最近項目需要做個工作列快速啟動的工具列,查了一下資料並不多,所以記錄了一些東西,供參考。

用過 Thinkpad 筆記本都會發現它有個電源指標,你可以通過右鍵點擊工作列 -> 工具列 -> 電源管理器來切換,這個東西又叫 Desk Band,屬於工作列擴充,事實上,微軟官方已經不建議在 Windows 7 中使用此特性,微軟推薦使用 Thumbnail Toolbars 來替換他,Windows 7 工作列新特性,參考:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460%28v=vs.85%29.aspx,但事實上這個東西很多時候其實還是很有用的。

Desk Band 在 Windows XP 上,需要實現
IDeskBand 介面,Windows Vista 及 Windows 7則需要實現
IDeskBand2 介面,以及實現相應的視窗顯示。

Code Project 有幾篇不錯的文章:

.Net 實現的,這個在 Windows7 上有問題,具體我沒有深入研究。

Extending Explorer with Band Objects using .NET and Windows Forms

http://www.codeproject.com/Articles/2219/Extending-Explorer-with-Band-Objects-using-NET-and

ATL COM的,這個不錯:

Shell Extensibility - Explorer Desk Band, Tray Notification Icon et al.

http://www.codeproject.com/Articles/39189/Shell-Extensibility-Explorer-Desk-Band-Tray-Notifi

大致步驟如下:

1. 建立一個新的 ATL Project Solution;

2. 添加一個新的 ATL Object,並實現 IDeskBand2 介面;

3. 實現一個視窗類別用於工具列的顯示,並在相應的介面實現中進行視窗的建立、顯示、隱藏等處理;

4. 通過 BEGIN_CATEGORY_MAP 宏註冊 CATID_DeskBand 組件類別。

5. 編譯註冊。

關於註冊以及顯示:

1. 註冊方法在所有 Windows 版本上都是一樣的,但通過代碼在工作列添加 Desk Band 在 Windows XP 和 Vista及Windows 7上是有區別的;
2. 可以在程式中實現添加和移除 Desk Band,但宿主程式不能關閉,因為視窗是在宿主程式建立的;
3. 如果想實現脫離應用程式獨立出現,在 Windows7上就有警告,我看到有朋友用 Windows Hook 自動點彈出框上的按鈕,也有朋友通過寫註冊表的方法(Desk Band 註冊表是二進位的,Windows升級後也不見得相容),總之是沒有官方的方法,不知道Thinkpad 電源管理器怎麼做的;

4. 具體方法上面的樣本中都有代碼。

其他一些 COM ATL 相關的參考資料:

1. COM 物件模型:

2. Component Categories
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686630%28v=vs.85%29.aspx

3. Registering Shell Extension Handlers
http://msdn.microsoft.com/en-us/library/windows/desktop/cc144110%28v=vs.85%29.aspx

4. IMPLEMENTED_CATEGORY

http://msdn.microsoft.com/en-us/library/z4z0at8a%28v=vs.80%29.aspx


5. ShellExView v1.68 - Shell Extensions Manager

http://www.nirsoft.net/utils/shexview.html

6. RGS

The ATL Registry Component (Registrar) 

http://msdn.microsoft.com/en-us/library/49tet6k7%28VS.80%29.aspx
Registry Map for RGS files

http://www.codeproject.com/Articles/6319/Registry-Map-for-RGS-files


7. IDL

MIDL Language Reference

http://msdn.microsoft.com/en-us/library/aa367088.aspx

Basics of an IDL file
http://www.codeproject.com/Articles/19605/Basics-of-an-IDL-file

IDL 詳解

http://blog.csdn.net/weiqubo/article/details/6990697

COM 代理與存根

http://www.cnblogs.com/zhy113/archive/2010/10/29/1864156.html

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.