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函数 | 容易地访问注册表的函数,读写注册表函数,处理路径名函数,和处理字符串函数。 |
参考文献
- . Microsoft Docs. Microsoft. 7 Oct 2008 [18 March 2013]. (原始内容存档于2013-02-24).