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).