前一段時間開發了一個MediaCenter的程序,由於之前沒有開發過類似的程序,所以做了一下小研究,整理一下研究結果,有點亂,先掛上以後整理。
這裏參考了MediaCenter的SDK幫助文檔和SteveHarding寫的一本叫做Programming in Vista Media Center的書(作者只寫了半本,下半本還沒寫出來,很尷尬,但是對MCML的講解比較詳細,可以入個門,看過之後看SDK不會那麼迷茫),又看了SDK裏面的大部分Demo。
先貼上整理的東西,以後再寫細節的東西,這裏有我自己試驗出來的,有在demo裏看出來的,有的是翻譯的英文文檔。
MediaCenter編程關於SDK
工具
Preview Tool Launcher 查看mcml
Sample Explorer查看demo 貌似不好用
Animation Explorer 查看編輯動畫 會生成動畫代碼
VS2008模板
WMC Application 帶4個按鈕的基本框架
WMC Application-Background 後臺程序
WMC Application-Fundamental 最小代碼的框架
WMC 包含兩個部分 Managed Code 和 Presentation Layer (mv)
Managed Code 包含以下namespace
Microsoft.MediaCenter
Microsoft.MediaCenter.Hosting
Microsoft.MediaCenter.UI
Microsoft.MediaCenter.DataAccess
Microsoft.MediaCenter.TV.Epg
Microsoft.MediaCenter.TV.Scheduling
Microsoft.MediaCenter.ListMaker
三種Application
Local Application 程序集和相關的文件
Web Application 通過http協議傳遞的mcml文件 類似asp.net
Background Application WMC啓動時啓動,自己退出或者WMC關閉時退出,能夠誇WMC程序?
WMC只加載本地的GAC
所以WMC Application要求必須有強命名 名字 版本 鍵值對snk
WMC的線程
WMC Application寄生在ehExtHost.exe進程中,先前的版本是shShell.exe,有各自的區域
每個Background Application運行在一個單獨的隔離的線程裏
Application可以創建多線程,但是必須使用Background線程,設置線程屬性IsBackground爲true
前端的顯示線程可以在適當的時機停止
WMC Object Model只能在一個線程中使用,所以不能在主線程之外的線程構造ModeItem或者UI的消息響應
大部分Microsoft.MediaCenter.UI中的函數都只能在主線程中調用!
Microsoft.MediaCenter Microsoft.MediaCenter.Hosting和Microsoft.MediaCenter.ListMaker可以在任何線程中使用,但是有些會阻塞,並且回調必須在主線程裏
Microsoft.MediaCenter.TV.Epg和Microsoft.MediaCenter.TV.Scheduling可以在多個線程中使用,可以在當前線程回調
exExtHost.exe最多可以有8個實例,可以用自己的方法在多個實例間通信
windows的外部程序可以依賴或者被依賴於WMC程序,不管WMC運行與否
Back Stack後退鍵 --!
WMC支持8步的後退,一般開始於開始菜單,由HistoryOrentedPageSession維護
保證Application 只有一個實例
如果Application佔用着當前播放資源,用戶可以隨時