Windows shell
Windows shell是Microsoft Windows作業系統的圖形用戶介面。Windows shell易於識別的元素包括桌面、任務欄、開始選單、任務切換器和自動播放等特徵。在Windows Vista,Windows 7上,還包括Flip 3D,在Windows 8.x上,含有超級按鈕欄(Charms欄)等功能。在Windows 10中,Windows Shell Experience Host介面可以驅動視覺效果,如「開始」選單,「操作中心」和「任務欄」、Task View/Timeline。另外,Windows shell還實現了一個shell命名空間,該命名空間使Windows上運行的計算機程式能夠通過shell對象架構訪問計算機的資源。「桌面」是層次結構的頂級對象,在它之下有一些儲存在磁碟上的檔案和資料夾,以及一些內容為虛擬或動態創建的特殊資料夾,如垃圾箱、控制面板、我的電腦、我的網絡位置等等。
基本上講,Shell是由資料夾組成的,資料夾是一個包含有子元素的容器,包括子資料夾,這些元素通常稱為資料夾項。根資料夾稱為『桌面』,其子項包括『我的電腦』,『網路上的芳鄰』,『資源回收筒』,和其他可能的項,所有這些資料夾的集合稱之為Shell的命名空間。資料夾實際上是一個Shell對象,它的行為被編碼成一個COM模組,向Windows Shell暴露公共的介面。通過連接,資料夾可以告訴Shell怎樣設計它的內容,使用什麼樣的圖示顯示,採用什麼文字來描述。檔案對象是一個包含在普通資料夾中的項—檔案、記錄、主記憶體塊、連接的裝置等。『資料夾項』、『資料夾元素』和『檔案對象』這些術語是等價的。任何資料夾的內容都是通過一個對象呼叫Shell viewer顯示在Windows explorer.exe中的。每一個資料夾都定義了他自己的Shell viewer對象,並且所有相關於這個用戶介面的任務都指派到這個對象上。
從概念上講,桌面是所有Windows Shell對象的父對象,即宿主對象。就實現方式而言,桌面是一個系統定義窗口類的特殊窗口(命名為#32769),並且是所有窗口的祖先窗口。那些匯出應用的頂層窗口一般而言都是桌面的子窗口。[1]
主要的Windows Shell部件就是工作列,它實際上就是由explorer.exe行程所擁有的一個窗口。當終止explorer.exe行程的時候,都將引起任務條的消失和重新顯現。每當工作列重新顯現的時候,它註冊一個具有不同HWND的新窗口。任務條擁有「開始」按鈕的窗口,在托盤區域有時鐘和類似按鈕的控制項,表示正在執行的應用。任務條實際上與窗口一樣,可以在其上作任何窗口上可以做的操作如移動、隱藏和子類化等。
explorer.exe是一個扮演着系統外殼角色的應用程式。當說到外殼擴充的時候,就是由explorer.exe感知的、裝入的並最終執行的代碼塊。explorer.exe可以被看作為一個微型的窗口開發環境:它有自己的函數和對話方塊;允許寫特殊的與已存在的體系整合的應用程式;能包容應用和文件。甚至可以解釋任何活動的指令碼相容語言的指令碼(VBScript,JScript,Perl,等等)。採用COM介面和行程內伺服器(實質上的DLL)
在Win16環境中,與Shell唯一的通訊方式是通過動態數據交換(DDE)。
Shell API 函數:
組 | 功能 |
---|---|
一般Windows函數 | 涉及到螢幕保護,控制面板指令碼程式,連線幫助,以及Shell拖拽(不是OLE拖拽) |
Shell內部函數 | 訪問explorer.exe地址空間的函數,獲得Shell儲存分配器的函數,匯出可執行程式的函數以及感覺用戶介面改變的函數 |
工作列函數 | 涉及到托盤域的函數和與Windows工作列通訊的函數 |
檔案函數 | 操作檔案的函數,他們執行如『拷貝』,『移動』,『刪除』和『取得資訊』等操作的系統活動,和添加檔案到特殊的系統資料夾如『最近文件』等。 |
資料夾函數 | 操作資料夾的函數,使用這些函數,你可以瀏覽資料夾,獲得系統資料夾的路徑,發現資料夾的設置。 |
圖示函數 | 從執行檔案中抽取圖示的函數 |
環境函數 | 處理環境變數的函數 |
Shell 輕量級API函數 | 容易地訪問登錄檔的函數,讀寫登錄檔函數,處理路徑名函數,和處理字串函數。 |
參考文獻
編輯- ^ Windows XP Embedded: Different Shells for Different Users. Microsoft Docs. Microsoft. 7 Oct 2008 [18 March 2013]. (原始內容存檔於2013-02-24).
外部連結
編輯- Windows Shell. Windows Development Reference. MSDN. [10 September 2012]. (原始內容存檔於2012-09-23).