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 ） ， 並且是所有窗口的祖先窗口 。 那些導出應用的頂層窗口一般而言都是桌面的子窗口 。 主要的Windows Shell部件就是任務欄 ， 它實際上就是由explorer.exe進程所擁有的一個窗口 。 當終止explorer.exe進程的時候 ， 都將引起任務條的消失和重新顯現 。 每當任務欄重新顯現的時候 ， 它註冊一個具有不同HWND的新窗口 。 任務條擁有 “ 開始 ” 按鈕的窗口 ， 在托盤區域有時鐘和類似按鈕的控件 ， 表示正在運行的應用 。 任務條實際上與窗口一樣 ， 可以在其上作任何窗口上可以做的操作如移動 、 隱藏和子類化等 。 explorer.exe是一個扮演着系統外殼角色的應用程序 。 當說到外殼擴展的時候 ， 就是由explorer.exe感知的 、 裝入的並最終執行的代碼塊 。 explorer.exe可以被看作爲一個微型的窗口開發環境 ： 它有自己的函數和對話框 ； 允許寫特殊的與已存在的體系集成的應用程序 ； 能包容應用和文檔 。 甚至可以解釋任何活動的腳本兼容語言的腳本 （ VBScript ， JScript ， Perl ， 等等 ） 。 採用COM接口和進程內服務器 ( 實質上的DLL ) 在Win16環境中 ， 與Shell唯一的通訊方式是通過動態數據交換 （ DDE ） 。 Shell API 函數 ：