- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[电脑基础知识]外壳命名空间扩展
外壳命名空间扩展 一般介绍 ??? 很多人一定用过ZipMagic,对它能把一个压缩文件映射成文件夹感到很奇怪,不知道它使用了什么技术,实际上它用到的技术就是实现了一个外壳的命名空间扩展(Shell Namespace Extention)。 文件夹和视图:资源管理器的基本结构 ??? 资源管理器的界面显示为两部分:左边显示的是对象在外壳命名空间的位置,它们是以树结构显示的,通常认为左边显示的应该是文件目录树,但事实上,左边还显示了很多并不是文件目录的外壳对象,比如控制面板、打印机等,事实上在资源管理器中看到的文件夹、控制面板、网上邻居等广义上来说都是命名空间;管理器右边显示了当前被选对象的详细内容,当选择目录时,右边显示目录中的文件,当选择控制面板时,右边显示控制面板项。这就是文件夹和视图结构。 文件夹同管理器的交互 ??? 传统文件夹是由外壳实现的代表硬盘上的物理目录结构,我们不能重载它的实现。而虚拟文件夹是通过外壳扩展的COM对象来实现的,比如控制面板。COM对象至少必须是以动态连接库形式实现了IUnknown和IShellExtInit接口。命名空间的两个主要组成部分是文件夹对象和视图对象。它们分别实现了IShellFolder和IShellView接口。 项目标识符 ??? 管理器左边显示的每一个项目都有一个唯一的标识符,由于项目不一定是文件,所以外壳不能再用目录来标识它们了。windows用项目标识符来表示它们,标识符的结构如下: ??? ?PSHItemID = ^TSHItemID; ??? ?TSHItemID = packed record { mkid } ??? ?cb: Word; { 需要添入结构的大小 } ??? ?abID: array[0..0] of Byte; ??? ?end; ??? 标识符很少单独使用,通常一个连一个地在标识符号链表里出现,当cb为0时表示到达链表的末尾了。当一个文件夹对象被创建了以后,外壳会调用它的IPersistFolder接口并传递给它一个标识符链表。 命名空间类型 ??? 系统创建的命名空间称为标准命名空间,用户创建的则称为用户定制的命名空间。注意用户定制的命名空间只有根节点对象才会自动出现在标准命名空间内。可以使用两种方法来创建命名空间: ??? 在标准命名空间里创建一个目录并把类标识符附在文件夹对象的后面,作为对象的文件名扩展。例如: ??? Custom Namespace.0000-0000-0000-C00000000000}. ??? 在注册表中创建下列键值: ??? ?HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ ??? ???Explorer\Desktop\Namespace. ??? 资源管理器会调用扩展的文件夹对象来枚举它的子对象,就好像子文件夹一样。 文件夹同子对象的交互 ??? 当用户点击文件夹的+号时,管理器会调用IShellFolder.EnumObjects函数来显示子文件夹列表。当用户点击最下层文件夹时,管理器会用视图来显示对象的内容。之前我们要做两件事: ??? 创建文件夹对象。管理器先创建被选中的文件夹对象的父对象,然后调用IShellFolder.BindToObject函数。 ??? 管理器调用文件夹对象的IShellFolder.CreateViewObject函数来创建视图对象。 文件夹同视图的交互 ??? 视图有两种类型:一种是弹出式视图窗口,另一种是普通视图显示在资源管理器右边。文件夹对象创建这两种视图是通过调用视图对象的IShellView.CreateViewWindow函数实现的。必须注意的一点是一个文件夹对象可能会对应多个视图对象,因为用户可能会为一个文件夹开很多窗口。这意味着视图和文件夹对象必须为每个实现创立一个分离的COM对象,资源管理器会负责同步不同视图的内容。 使用Delphi创建命名空间扩展实现视图对象 ??? 对象必须做到: ??? (1)创建一个视图窗口的子窗口并使用它来显示文件夹的内容。 ??? (2)同资源管理器通讯。 ??? (3)向资源管理器的菜单条和工具条添加文件夹相关的命令,并处理这些命令。 ??? (4)显示上下文相关的右键菜单和处理拖放操作。 ??? 资源管理器要请求一个视图对象可通过调用文件夹对象的 IShellFolder.CreateViewObject方法来实现,过程是: ??? (1)文件夹对象创建一个视图的新的实例,并返回一个IShellView接口。 ??? (2)资源管理器初始化视图对象通过调用IShellView::CreateViewWindow方法。创建一
有哪些信誉好的足球投注网站
文档评论(0)