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 函数：

参考文献

外部链接

 

 

Windows组件
图形用户界面