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函数  涉及到屏幕保护，控制面板脚本程序，联机帮助，以及Shell拖拽（不是OLE拖拽） Shell内部函数 访问explorer.exe地址空间的函数，获得Shell存储分配器的函数，导出可执行程序的函数以及感觉用户接口改变的函数 任务栏函数 涉及到托盘域的函数和与Windows任务栏通讯的函数 文件函数 操作文件的函数，他们执行如‘拷贝’，‘移动’，‘删除’和‘取得信息’等操作的系统活动，和添加文件到特殊的系统文件夹如‘最近文档’等。 文件夹函数 操作文件夹的函数，使用这些函数，你可以浏览文件夹，获得系统文件夹的路径，发现文件夹的设置。 图标函数 从执行文件中抽取图标的函数 环境函数 处理环境变量的函数 Shell 轻量级API函数 容易地访问注册表的函数，读写注册表函数，处理路径名函数，和处理字符串函数。

参考文献

外部链接





Category:Windows组件
Category:图形用户界面