用Managed 程式碼調用 Windows 7 工作列的新功能

來源:互聯網
上載者:User
文章目錄
  • 準備
  • 開始
  • 效果
  • 其他
  • 代碼及相關檔案下載
準備

Windows 7 Beta已經公開發布了的,可從http://www.microsoft.com/windows/windows-7/beta-download.aspx下載。W7在工作列上做了很大的改進,關於工作列的新特性可以看一下http://blogs.msdn.com/e7/archive/2008/11/20/happy-anniversary-windows-on-the-evolution-of-the-taskbar.aspx。如果要對Windows 7進行開發最好看一下白皮書,可以從http://code.msdn.microsoft.com/PDC08WhitePapers/Release/ProjectReleases.aspx?ReleaseId=1797下載。我們對工作列進行開發會用到Windows 7 Taskbar Enhancements。這裡我們主要實現在工作列的表徵圖中顯示進度(Overlay Icons and Progress Bars)。在實現過程中還可能需要用到Windows 7 SDK Beta。

開始

首先在Windows SDK中找到ShObjIdl.idl檔案,如果沒有安裝SDK可以在文後下載。這是一個介面定義語言檔案,為了方便調用,我們可以將類似

1HRESULT SetProgressValue(
2        [in] HWND hwnd,
3        [in] ULONGLONG ullCompleted,
4        [in] ULONGLONG ullTotal);

這樣的介面聲明改為

1HRESULT SetProgressValue(
2        [in] long hwnd,
3        [in] ULONGLONG ullCompleted,
4        [in] ULONGLONG ullTotal);

也就是把HWND類型改成long。然後用midl將改過的idl檔案產生二進位的tlb檔案, ShObjTlb.tlb是產生的檔案,ShObjIdl.idl是原檔案。


再用tlbimp將tlb檔案產生託管dll檔案。


在項目中添加對該dll的引用,然後就可以像引用託管dll一樣調用其中的方法了。
要實現在工作列表徵圖中顯示進度主要用到2個函數,SetProgressState和SetProgressState。
SetProgressState方法的第一個參數是控制代碼,第二個參數是個枚舉變數,表示當前表徵圖的狀態,我們可自己定義一個枚舉來表現這些狀態

1private enum TbpFlag
2        {
3            TBPF_ERROR = 1,
4            TBPF_PAUSED = 2,
5            TBPF_NORMAL = 3,
6            TBPF_INDETERMINATE = 4,
7        };

然後就可以使用SetProgressState( (int)this.Handle , TBPFLAG.TBPF_NORMAL);將表徵圖狀態設定成正常狀態。
SetProgressValue((int)this.Handle, 50, 100);可以設定進度,第一個參數是控制代碼,第二個參數是已完成量,第三個參數是總量。
關於這些函數的詳細使用方法請查看Windows 7 SDK或英文版的MSDN Library。

效果

20%完成時:


50%完成時:


100%完成時: 

其他

根據這個方法並參照PDC2008的白皮書中的介紹可以用託管語言實現其他Windows 7的新功能。

Unmanaged 程式碼

如果用C++實現這個功能將更簡單,可以參考Windows SDK,路徑是Microsoft SDKs\Windows\v7.0\Samples\winui\Shell\TaskbarIntegration\PeripheralStatus

代碼及相關檔案下載

1. 完整樣本下載

2. ShObjIdl.idl下載

更新

現在還可以通過 Windows API Code Pack for Microsoft .NET Framework 來使用 Windows7 中的新特性。詳細資料請參閱http://code.msdn.microsoft.com/WindowsAPICodePack

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.