1
我创建了一个非常小的自动化对象(使用delphi 7)。 它可以工作,但我有问题将它注册到运行的对象表中,以便我可以使用getActiveOleObject函数来检索服务器的运行实例。 问题是Initialize和Destroy事件不会触发。Delphi - 在ROT中注册com服务器
编辑: 我刚刚注意到,初始化被激发,当我通过createOleObject在客户端应用程序中创建应用程序。
EDIT2: 下载样本PROJEKT here
这里的源代码:
unit mycomserver;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, server_TLB, StdVcl, dialogs;
type
Tmyserver = class(TAutoObject, Imyserver)
private
FROTCookie: Longint;
public
procedure Initialize; override;
destructor Destroy; override;
protected
procedure hello; safecall;
end;
implementation
uses ComServ;
procedure Tmyserver.Initialize;
begin
inherited;
//Register object in ROT
showmessage('Why the init event doesnt fire?');
OleCheck(RegisterActiveObject(Self, CLASS_myserver, ActiveObject_Weak, FROTCookie))
end;
destructor Tmyserver.Destroy;
begin
// unegister object in ROT
showmessage('And destroy event also doesnt fire...');
OleCheck(RevokeActiveObject(FROTCookie, nil));
inherited;
end;
procedure Tmyserver.hello;
begin
showmessage('hello its me the comserver');
end;
initialization
showmessage('com server init works...');
TAutoObjectFactory.Create(ComServer, Tmyserver, Class_myserver,
ciMultiInstance, tmApartment);
end.
看看它显示代码如何做到这一点。 http://www.blong.com/Conferences/IConUK2000/DelphiMoreAutomation/More%20Automation%20In%20Delphi.htm 您可能已有。 – 2010-07-06 21:57:04
是啊,这正是我所读的... – ben 2010-07-07 05:12:41