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