SmStandAlone 用户启动应用程序
SmAutomation Windows为创建OLE对象而启动程序
SmRegSever 应用程序仅为注册一个或多个OLE对象而启动
SmUnregSever 应用程序仅为注销一个或多个OLE对象而启动
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
当StartMode模式是SmAutomation,而用户不再需要服务器时发生OnLastRelease 事件。此时所有OLE控制器释放了由服务器创建的对象。缺省情况下,服务器关闭实例,但OnLastRelease 事件可根据实际情况是否关闭。OnLastRelease 事件可得到一个叫ShutDown的布尔型变量。把ShutDown设置成True,则在最后一个OLE对象释放时服务器不关闭。
无论创建何种自动化服务器,必须定义对控制器的界面,包括定义和注册OLE对象,OLE自动化对象的属性和方法。定义界面主要是为了控制器能够引用它们。
对已存在的自动化服务器界进行修改时,要确保向上兼容 ,不要删去已有的属性、方法,这样会导致已存在的自动化控制器发生错误,修改服务器只能增加属性和方法。
创建OLE自动化服务器第一步是创建服务器自身。即创建能输出OLE 对象的应用程序或动态链接库。这主要取决于是创建进程内服务器还是进程外服务器。
创建进程内服务器,即动态链接库:
1.创建动态链接库;
2.在工程文件的uses条款中加入OLEAuto单元;
3.在DLL中输出四个标准入口,即加入以下代码。
exports
DLLGetClassObject,DLLCanUnloadNow;
DLLReGISterServer,DLLUnregisterServer;
以上代码必须准确拼写,包括大小写。与Object Pascal的其它项目不同,这些代码
对大小写敏感。
创建进程外服务器:
1.创建一个Delphi应用程序;
2.在工程文件的begin之后加入以下代码;
if Automation,Server Registration then Exit;
创建服务器之后,应该向服务器加入OLE自动化对象,这个过程大部分是自动完成的,但必须向Delphi的自动化对象专家提供必要的信息。
把OLE自动化对象加入服务器:
1.在Delphi集成开发环境中选择File| New 菜单项, 并在对象集中选择Automation
Object,Delphi打开自动化对象专家。
2.给自动化对象命名
这是服务器内部标识OLE对象的名字,必须是个有效的面象对象Pascal标识符,习惯上以T字母开头;
3.给OLE类命名
该名用以外部控制器创建对象。当服务器在Windows中注册OLE对象, 就以这个名字在系统注册。控制器使用这个名字调用CreateOLEObject来创建对象。
4.描述要输出的对象。
5.定义对象的实例(instancing),进程内服务器常定义为Multiple,进程外服务器常定义为Single;
6.选择OK键完成该过程
自动化对象专家将产生以下代码:
● 从TAutoObject派生下来的自动化对象定义,但没有定义任何属性方法;
● 调用DelphiOLE自动化管理器的注册代码,管理器负责Windows中注册服务器和对象。
在注册代码中包括一个自动产生的
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




