现在的位置: 首页 > 综合 > 正文

Windows Shell 编程 第十四章

2012年12月16日 ⁄ 综合 ⁄ 共 2518字 ⁄ 字号 评论关闭

有一些工具可以使应用程序更紧密地与Shell和底层系统进行集成。也就是说,用户可以象处理系统文档和程序那样处理你的文档和程序。例如,右击文件来显示可用功能列表等。Windows为每一个文件提供默认的功能集,如‘打开’,‘属性’,‘拷贝’等。是否能为特定的文档增加特殊功能。为此,我们必须客户化这个文档类的关联菜单。

另一个应该与Shell集成的例子是:假设你的程序有建立空文档的能力,用户使用系统的‘新建’菜单项在任一文件夹上飞快地建立新文档,要想如此,就必须在系统注册表中记入一些信息。

当然,这是特殊情形,作为开发人员和应用设计人员还应该重视许多其它有用的特征。在这一章中我们将讨论Shell集成的各方面技术,以帮助开发者将应用与系统Shell无缝集成,使你的产品更专业。这些技术包括:

         怎样客户化关联菜单

         怎样注册新文件类型

         怎样设计和编程处理命令行

         怎样编程定制‘打开’对话框

我们将设计一个基于文档的全属性应用,这个应用显示和打印所有Windows支持的元文件,从传统的(*.wmf)到增强的(*.emf)。我们将应用所有我们前面讨论过的理论技术,以及Shell对元文件的丰富支持。

 

Shell集成应用

         头一个问题显然是Shell集成应用的组成结构是怎样的。就Win32的面向文档程序概念,有几个关系到系统Shell的特征需要给出。简单地说,有三组定义Shell集成应用的特征:

         为程序处理的任何文档注册图标和类型名

         为程序处理的文档客户化关联菜单

         在系统的‘新建’菜单中可能有一个或多个客户化条目

         单一程序实例

         对每一个打开过的文档在‘最近文档’文件夹中有一个新条目

         完全支持长文件名,尤其是对于用户文档。

除了这些基本特征外,我们还需增加一些不常使用的特征:

         在系统的‘发送到’菜单中客户化一个或多个条目

         在‘开始’和‘程序’菜单中客户化一个或多个条目

         在‘Favorites’文件夹中客户化一个或多个项

         在桌面上生成一个或多个新快捷方式

         有一个应用桌面工具条来集中程序的所有主要功能

         客户化某些系统公共对话框

         在用户下一次登录时注册应用自动启动

第三组特征主要受限于特定安装器,如InstallShield WISE,它们是:

         拷贝共享文件到系统公共路径

         在‘程序文件’文件夹下安装应用

         提供卸载程序

         探测Shell应用路径名来定义查找文件的路径

这些要求来自于Windows标记规范,然而对于Windows环境下更高层次的抽象概念而言它们是最基础的:为了打开和使用文档,用户不必知道实际装入和显示文档的是什么程序,只需找到和双击文档的图标和这个文档的名字即可(实际在桌面设置中也可以设置单机打开方式)

 

文档和Shell

         Windows95发布以后,文档成为系统Shell更中心的角色,文档已经成为了主角,而实际处理它的程序则缩减成配角。甚至它们在硬盘驱动器上的位置都标明其状态的低下:程序被分组在‘程序文件’文件夹下,每一个都有自己的子文件夹,以及一个存储DLL和其它帮助文件的子目录。这样的许多文件夹都是隐藏的——这进一步确认程序相对于文档是次要的。

    

 

查看上面的截图,我们可以看到文档有它们自己的图标和描述,更进一步,每一个文档都有专门的关联菜单,从菜单中可以执行一些Shell功能。有些功能可以应用于各种文档,因而出现在所有文档的关联菜单中,有些则是个别文档类型所具有的。

 

基本的文档功能

         Windows Shell提供一些菜单动词,可以自由使用,它们是:

                   拷贝、剪切、粘贴

                   删除

                   重命名

                   建立快捷方式

                   属性

此外,还有两个菜单命令,‘打开’或‘打开方式’,但是这两个是相互排斥的——后者仅仅在没有注册程序打开指定文档时出现,并且导出下面的对话框:

                     

相反‘打开’命令则依赖于存储在注册表中的条目内容,这就是我们将要讨论的。

 

‘发送到’命令

         另一个我们总能看到的命令是‘发送到’,它有一个子菜单。这个子菜单列出了选中文档可能的目的地。‘目的地’是一个在命令行上接收给定文件名的程序。下图说明‘发送到’菜单是怎样把文件设置成新邮件的附件:

                  

通过我们在这一节中列出的命令,Shell保证了对PC上各种文档的最低层支持。对于有经验的用户和软件工程师,这就等于提供了使用更多的文档特定特征扩展这些基本行为的机会。

 

注册文档类型

         关于Shell构造的所有信息都存储在系统注册表中,所以修改Shell表现或行为的任何方法都必须通过注册表。

         为了使Shell识别和适当处理一定种类的文档,它就必须是一个注册类型。一个文档的类型由它的文件名的扩展所标识,而且所有注册的文档类型都存储在HKEY_CLASSES_ROOT注册表节点下:

            

 

文件扩展(.ext)的条目指向同一个节点下的另一个键,其名字存储在.ext的默认值中,在上图中,对EML文件(微软邮件消息,Outlook Express格式文件),其值为:

Microsoft Internet Mail Message

如果需要获取这个文档类型的注册信息,你就必须探索:

HKEY_CLASSES_ROOT

/Microsoft Internet Mail Message

        

在这个键下,存储了应用于三个方面的信息:

                   用户接口

                   关联菜单

                  

【上篇】
【下篇】

抱歉!评论已关闭.