Delphi下的COM编程技术简介
http://tech.ddvip.com 2006年07月30日 社区交流
本文详细介绍Delphi下的COM编程技术简介
DllGetClassObjetc()用于获取一个COM对象的类工厂。CLSID参数用于指定COM对象的CLSID,HD参数用丁指定要获取的类工厂的接口IID(通常设为IClassFactory的IID)。如果这个函数调用成功,obj参数将返回一个指向类工厂的指针。
DllCanUnloadNow()用于判断COM服务器是否应当从内存中卸载。只要服务器中有一个COM对象被引用,这个函数就应当返回S_PALSE,表明DLL不应当卸载。如果服务器中没有一个COM对象被引用,这个函数应当返回S_TRUE。
要在服务器中加入COM对象,可以使用“File”菜单上的“New”命令,翻到“ActiveX"页,然后双击“COM Object”图标,Delphi 5将启动COM对象向导.这里说的COM对象是非常简单的。如果要创建特定形式的COM对象,诸如OLEAutomation对象或者ActiveX件.则必须使用Delphi提供的专门向导。具体方法如下:
1、在“Class Name”框内输入C0M对象的类名,不必以T打头。
2、在“Instancing”框内指定COM对象的实例模式。对于In?Process类型的服务器来说不必指定实例模式。
3、在“Threading Model",柜内选择一种线程模式,可以设为以下值:
Single:整个COM服务器都是单线程的
Apartment:每个COM对象的实例有单独的线程。这样,凡是需要共享的数据(诸如全局变量)必须用线程同步对象保护;
Free:一个COM对象的多个实例可以同时运行,这意味着COM对象必须保护自己的实例数据,以避免多个实例相冲突:
Both:同时支持Aartment和Free两种线程模式。
在“Implementd Interfaces”框内输入让COM对象实现的接口名称(可选)。默认情况下向导所创建的C0M对象只实现IUnknown接口。如果选中“Include Type Library”复选柜,向导将生成一个类型库。
作者:cindy 责编:豆豆技术应用