商品簡介
《Windows 7高級編程》深入研究了微軟自Vista以來修改的各種元素,以及微軟根據用戶需求添加的新功能。作者John Paul Mueller具有豐富的實踐經驗,他在書中深入講解了如何使用安全策略,同時還從不同的角度討論了Windows Firewall的管理。此外,他還以一種簡單直接的、過程化的方法講解了如何使用觸發器啟動服務,深入討論了如何利用應用程序的用戶賬戶控制(UAC)功能,細緻地分析了通過組策略對象來使用Windows Firewall的方法。.
作者簡介
John Paul Mueller創建了DataCon Services諮詢公司。在過去的23年中,他已經出版了80多本專著,並撰寫了300多篇文章,涵蓋了從網絡技術到人工智能、從數據庫管理到編程技術等各種專題。.
名人推薦
《Windows 7高級編程》深入研究了微軟自Vista以來修改的各種元素,以及微軟根據用戶需求添加的新功能。作者John Paul Mueller具有豐富的實踐經驗,他在書中深入講解了如何使用安全策略,同時還從不同的角度討論了Windows Firewall的管理。
目次
第Ⅰ部分 Windows 7簡介
第1章 Windows 7的改進之處
1.1 Windows 7是否真的只是增強版的Vista
1.2 從開發人員的角度分析主要的改進
1.2.1 瞭解用戶界面的改進之處
1.2.2 考慮安全的改進之處
1.2.3 開發可擴展的應用程序
1.3 考慮Windows XP模式
1.4 開發Windows PowerShell 2
1.5 將應用程序移植到Windows 7
第2章 開發Windows 7的策略
2.1 確定用戶Windows 7的舒適級別
2.1.1 明確使用需求
2.1.2 考慮培訓需求
2.1.3 取悅於用戶
2.2 考慮是否移植
2.2.1 測試應用程序中的問題
2.2.2 明確向Windows 7移植的優勢
2.2.3 採用Windows XP模式
2.3 將應用程序移植到Windows 7
第3章 瞭解.NET4.0
3.1 瞭解為什麼需要.NET 4.0
3.1.1 定義應用程序的兼容性和部署
3.1.2 研究新核心功能及其改良之處
3.1.3 使用Managed Extensibility Framework
3.1.4 實現並行計算
3.1.5 考慮聯網問題
3.1.6 瞭解數據的改進之處
3.2 獲取和安裝.NET 4.0
3.3 考慮Windows 7的擴展功能
3.4 將應用程序移植到Windows 7
第Ⅱ部分 使用Windows用戶界面
第4章 使用任務欄
4.1 簡單瞭解Windows 7的新任務欄
4.1.1 深入瞭解各項新功能
4.1.2 瞭解應用程序設置的重要性
4.2 考慮任務欄的升級
4.2.1 任務欄是應用程序的一種交互工具
4.2.2 任務欄新功能簡介
4.3 創建基本的任務欄應用程序
4.3.1 獲取Microsoft.NET Framework的Windows API Code Pack
4.3.2 創建解決方案
4.3.3 添加跳轉列表代碼
4.3.4 測試Code Pack結果
4.4 使用.NET 4.0的方法
4,4.1 建立解決方案
4.4.2 添加代碼
4.5 避免濫用任務欄
4.6 將應用程序移植到Windows 7
第5章 高級任務欄技術
5.1 使用跳轉列表
5.1.1 添加通用類別
5.1.2 添加自定義類別
5.1.3 執行自定義任務
5.1.4 使用跳轉列表導航到網頁
5.2 使用進度條
5.2.1 配置進度條應用程序
5.2.2 管理進度條
5.2.3 更改狀態
5.3 使用縮略圖工具欄
5.3.1 定義縮略圖工具欄應用程序
5.3.2 繪製按鈕圖標
5.3.3 創建工具欄和事件處理程序
5.4 使用覆蓋圖標
5.5 組合使用任務欄的各種控件
5.6 創建完備的接口
5.6.1 應用程序用跳轉列表和縮略圖工具欄交互
5.6.2 使用覆蓋圖標和進度條顯示狀態
5.7 將應用程序移植到Windows 7
第6章 使用Ribbon界面
6.1 把Ribbori作為一個整體考慮
6.1.1 Ribbon到底是什麼
6.1.2 瞭解Ribbon如何幫助初學用戶
6.1.3 在Windows中查看Ribbon
6.2 查看Office中的Ribbon
6.2.1 瞭解Office的文檔鏈接
6.2.2 考慮如何將Office的技術擴展到、Windows 7
6.3 定義Windows 7中的Ribbon功能
6.3.1 介紹Windows 7中的Ribbon控件
6.3.2 瞭解控件屬性
6.4 將應用程序移植到Windows 7
第7章 創建自定義Ribbon界面應用程序
7.1 開始學習Ribbon
7.1.1 獲取Windows 7 SDK
7.1.2 獲取RibbonLib
7.1.3 配置應用程序
7.1.4 定義一個Ribbon界面
7.1.5 創建應用程序
7.2 WPF下使用Ribbon
7.2.1 為WPF獲取微軟的Ribbon
7.2.2 配置WPF應用程序
7.2.3 定義WPF應用程序的Ribbon界面
7.2.4 創建WPF應用程序
7.3 將應用程序移植到Windows 7
第8章 Aero Glass編程
8.1 設計Aero Glass需考慮的問題
8.2 使用Windows 7通用文件對話框
8.2.1 Common File Dialog控件
8.2.2 配置Common File Dialogs示例程序
8.2.3 定義File Open對話框
……
第Ⅲ部分 開發安全的應用程序
第Ⅳ部分 Windows 7高級編程
第Ⅴ部分 在命令行方式下工作.
書摘/試閱
有趣的是,數據結構PortData也位于托管內存中,所以代碼必須將其封送到本機內存中,以便Win32 API可以訪問。與字符串不同,指針PortDataPtr指向的本機內存結構的大小不容易確定。因此,代碼調用MarshaI.AllocHGlobal()從全局堆中分配本機內存結構要求的內存,但它必須告訴該方法要分配多少內存。所以代碼調用Marshal.SizeOf()來確定SERVICE_TRIGGER_SPECIFIC_DATA_ITEM所需本機內存的大小。但您決不可調用標準的sizeof()方法來確定數據結構的大小,因為sizeof()返回的是托管內存的大小。
分配PortData需要的內存僅是第一步。所分配內存尚未包含任何數據。Marshal.StructureToPtr()方法將PortData中的數據轉移到本機內存中,同時用PortDataPtr存放指向該內存地址的指針。如果您不想刪除原先的內容,就將第三個參數設置為false。
上述步驟為觸發器創建了一個數據元素,并將其封送到本機內存中。現在需要創建實際的觸發器。第一步是將FIREWALL_PORT_OPEN_GUID所描述的觸發器子類型封送到本機內存中。因為Guid是一個結構,所以采用與處理PortData相同的方法——調用Marshal.AllocHGlobal()為其分配內存,然后調用Marshal.StructureToPtr()將數據移動到該內存中。
通過定義SERVICE_TRIGGER對象創建一個觸發器。此例中,代碼先創建StartTrigger然后填充數據。一個觸發器由4種元素組成:觸發器類型、觸發器子類型、動作和數據。觸發器StartTrigger.dwTriggerType是一個簡單的枚舉值SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT。動作StartTrigger.dwAction是一個簡單的枚舉值SERVICE_TRIGGER_ACTION_SERVICE_START。觸發器子類型StartTrigger.pTriggerSubtype是到FirewallPortOpen所指向的先前已封送的數據的指針。同樣,數據StartTrigger.pDataItems是到PortDataPtr所指向的先前已封送的數據的指針。該結構還需使用StartTrigger.cDataItems元素告訴Win32 API在PortDataPtr中包含多少個數據項。
終止觸發器的創建過程和啟動觸發器的創建過程一樣。至此,代碼有兩個托管觸發器。觸發器指向本機內存,但數據本身、枚舉值和指針駐留在托管內存中。代碼必須創建一個觸發器數組,并將其放到ServiceTriggersPtr中。數組通常是使用托管代碼創建的,但為本機代碼創建數組則與之不同。