OLE和书记官处

OLE和书记官处

哇,现在我们回到注册表。这是很多的东西覆盖,只是为了了解处理的OLE的基本知识。正如我前面提到的,广泛的OLE工程与注册表。当一个应用程序注册作为一个潜在的OLE服务器应用程序本身,这个注册过程包括:添加到注册表的条目数。对于OLE应用程序,如ActiveX控件,这些项目都是相对简单,容易掌握。更复杂的OLE应用程序,以微软Word为例,在注册表中的项数百通常很难理解。让我们来看看一个简单的OLE控件,ActiveX控件称为日历控制10.0,这是一个由Microsoft应用程序提供(作为Office XP的一部分),允许用户在他们的文件中插入一个日历。是的,日历控制10.0到Word文档嵌入(你也可以嵌入到许多其他类型的文件,它)。这种用法,这是典型的,是非常有用的,思考如何你需要包括一个文档中的日历许多倍。退房图6.4看到Word和日历控件10.0共同努力。在这份文件中,我用这个数字,我实际使用的日期,我写这本教程。

大小和位置...

  

日历控件10.0可以很容易地调整大小。然而,一些版本的ActiveX控件无法正常工作,以及嵌入到Word时。他们可能会造成一个潜在的窗口,使该控件大小的主窗口困难。正因为如此,嵌入式控制往往调整其在意想不到的方式显示。这是不能接受的行为,我可以补充。如果你嵌入的对象难以调整,尝试:一是调整有问题的控制,使之更小,然后快速前Word可以调整其大小,单击基础的基本窗口。这锁的基本窗口,以便您可以调整该控件的适当的窗口。一个简单的双基地内的任何地方的窗口中单击恢复正常显示。Microsoft Calendar控件10.0允许与其他文件和应用程序之间的大量相互作用,您可以设定月份和年份根据需要使用下拉列表框。然而,为什么你,一个用户,希望其他的互动?容易的!一个典型的例子是日历控件嵌入到网页,文档的应用是Web浏览器。另一个例子是日历控件嵌入到一个电子邮件。丁!难道光引爆?电子邮件在您的团队每一个人,包括在消息中的一个适当的日期显示日历的虚拟会议的内容。您可以修改嵌入对象的属性。通常有两种方法来设置对象的属性。第一种是使用编程接口(令人讨厌,见图6.5)。您也可以使用该对象的对象属性对话框(见图6.6)。该编程接口可以使用所有可能的属性,而对象属性对话框允许快速和简单的选择对象属性的修改。

因此,我们有一个Microsoft Calendar控件10.0 OLE服务器应用程序作为ActiveX控件执行。让我们看一下对日历控件的注册表项。首先是项在HKEY_LOCAL_MACHINE \ Software \ Classes下\ CLSID中。这些项定义的OLE接口过多:

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)] @ =“日历控件10.0”

该线以上的配置单元(HKEY_LOCAL_MACHINE),键(软件),和子(类别\ CLSID中),其次是任何值,这些键可能含有。阿的形式价值@ =数据表示默认值项发现在每一个注册表项和子项。

注意:Windows XP的CLSID是相同的Windows NT 2000的CLSID。惊讶吗?不要,为的CLSID来自应用程序,而不是操作系统。此外,10.0日历控件可能具有与9.0相同的日历控件的CLSID。第一子项包含的日历控件10.0服务器的CLSID。此CLSID正好是8E27C92B - 1264 - 101C - 8A2F - 040224009C02,虽然日历控制的其他版本(如果他们是完全不同的)可能有不同的CLSID。默认的数据变量包含一个字符串描述程序。请注意,此字符串也是在注册表中,HKEY_LOCAL_MACHINE \ Software \ Classes下第二部分找到\ MSCAL.Calendar.7,下面描述。

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ @ =的CLSID“8E27C92B - 1264 - 101C - 8A2F - 040224009C02”

Windows使用短,人可读的应用程序名称AuxUserType子项。菜单,经常和弹出,使用这些短名称。 Microsoft建议在AuxUserType的名称有效期不得超过15个字符。入境,InprocHandler32,告诉系统什么进程处理将被使用。

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ @ =的“C InprocServer32:\ Program Files文件\微软Office \ Office10 \ Mscal.ocx的”

许多应用程序使用InprocServer.dll作为其在进程处理,虽然这不是必需的。另一种常用的进程内处理程序MAPI32.DLL可能,而这正是许多邮件使用功能的对象:与Windows XP中,可插入使用的指示进入到该应用程序在插入新对象插入清单列出的系统对话框:

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ @ =可插入“”

下一个项目包含应用程序的完全合格的路径和可执行文件名。这个字符串不是一个REG_EXPAND_SZ的,所以不使用替代变量:

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ MiscStatus @ =“131473”

注意在MiscStatus,价值观结合起来使用,或按位二进制此外,在最简单的方法按位是简单地添加值。例如,一个应用程序的标志:“对象设置客户端站点第一”(131072),“激活对象时可以看到”(256)“的对象是内到外”(128)“的对象不能链接内“(16)和”调整大小,对象是重新组合“(1)将存储的(131072 + 256 + 128 + 16 + 1)=在MiscStatus,这正是价值,在我们的日历是131473的价值控制对象的MiscStatus。在某些项,子项可打印的OLE对象表示将支持IPrint方法(可打印并非在所有对象中,只有那些使用IPrint打印方法):

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ @ =打印“”

对于一个可插入的对象,必须有相关的ProgID值(ProgID是为“编程标识符简写”)。此值包含一个简短名称,类型,和一个数字值(数值通常是一个版本号):

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ @ =的ProgID“MSCAL.Calendar.7”

一个注册表节创建这个名称(见下项),其中更多的注册表值将是此对象中:

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\动词@ =“”

动词类型的行动表明,该对象可能。始终编号连续在注册表中,有三个组成部分动词的条目,如下所示:

(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\动词\ @ = 0“和编辑,0,2”

此示例动词,编辑,显示了三件事。首先,在菜单中使用的文字,和编辑。 &表明,该信将下列强调,作为热键值。

有一种为日历控件10.0 OLE对象注册表的第二部分。本节,在HKEY_LOCAL_MACHINE \ Software \ Classes下,被称为MSCAL.Calendar.7。在MSCAL.Calendar子项中,有两个可能的值项。一个是如下:

[HKEY_LOCAL_MACHINE \软件\班\ MSCAL.Calendar] @ =“日历控件10.0”

第一个值项是(@ =)的默认值,它包含的名称(“日历控件10.0”)在插入对象对话框插入列表中使用。第二个值,某些对象可能使用EditFlags,其中包含编辑旗帜,为十六进制值表示。该CLSID子项包含该对象的CLSID:

[HKEY_LOCAL_MACHINE \软件\班\ MSCAL.Calendar \ CLSID中] @ =“(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)”

如果存在,下一个子项(其中工程与技术的Microsoft OLE DocObject)可能包含有关OLE对象的能力的信息:

[HKEY_LOCAL_MACHINE \软件\班\ MSCAL.Calendar.7 \ DocObject] @ =“0”

在Windows 2000和Windows XP,下列项目使用的指示到该应用程序应在新的插入对象对话框插入清单列出的系统:

[HKEY_LOCAL_MACHINE \软件\班\ MSCAL.Calendar \可插入] @ =“”

该协议子用于与OLE 1个集装箱(客户端)应用程序的兼容性:

[HKEY_LOCAL_MACHINE \软件\班\ MSCAL.Calendar \协议] @ =“”

有一个子项协议,称为StdFileEditing。内StdFileEditing,有一些项目,如下所示:

[HKEY_LOCAL_MACHINE \软件\班\ Word.Document.6 \协议\ StdFileEditin克] @ =“”

在StdFileEditing默认项是空字符串。

[HKEY_LOCAL_MACHINE \软件\班\ Word.Document.6 \协议\ StdFileEditin克\服务器] @ =的“C:\ \ PROGRA〜1 \ \微〜2 \ \ WINWORD.EXE中”

在StdFileEditing第一个子项是服务器子项。内部服务器是默认的字符串,其中包含了服务器的完全合格的名称的可执行文件。 (Calendar控件没有这个项目,所以我已经表明了词项。)由于此字符串是REG_SZ,不要使用诸如的%SystemRoot%,在它的任何替代变量。

在StdFileEditing下一子是动词。内动词有一个或多个编号的子项;号码以0开头,应该是连续的。每个动词的OLE应用程序使用菜单将包括,如下所示:

[HKEY_LOCAL_MACHINE \软件\班\ MSCAL.Calendar \协议\ StdFileEditing \动词\ 0] @ =“和编辑”

这是动词编辑菜单选择。在菜单中使用的文本和编辑。 &表明,该信将下列强调,作为热键值。最后,版本无关的ProgID创建。即使在控制更新,此项目将不会改变:

HKEY_LOCAL_MACHINE \软件\班\的CLSID \(8E27C92B - 1264 - 101C - 8A2F - 040224009C02)\ VersionIndependentProgId @ =“MSCAL.Calendar”

喜欢的ProgID,这确定了程序,没有任何版本的引用。

由Dessue Mathenes提交的一篇文章


免责声明:我们的网站是不负责本文章的内容。 Webarticles是一个免费的信息资源。
重要事项: 这篇文章的“OLE和书记”是由一个自动翻译软件。我们感到很遗憾拼写的任何可能发生的错误。谢谢您的理解。


Online: 229 users browsing the articles directory   


  

|