to zhfle:
要想Server发送消息给指定的Client,你需要设置一个全局的用户列表,每个用户
在创建了CoClass之后, 应该通过一个RegUser method注册用户的名称到你的列
表之中同时注册用户CoClass的指针(如果是multithread), 要发送消息的时候找
到这个用户的CoClass激发相应的事件. 注意,在destroy的时候从用户列表中去掉
注册的用户.
具体做法 可以在Com Object的单元中声明一个TStringList,并且在单元的
initialization创建 在finalization时候free.
type
TMyComObject = class(TAutoObject, iConnectionPointContainer, iMyObject)
private
...
FUserName: widestring;
protected
...
procedure RegUser(UserName: widestring);
public
destructor destroy;
override;
end;
var
UserList: TList;
implementation
....
procedure TMyObject.Login(const UserName: WideString);
begin
FUserName := UserName;
UserList.Add(UserName,self);
end;
initialization
TAutoObjectFactory.Create(ComServer, YourObject, Class_ofYourObject,
ciMultiInstance, tmApartment);
//create userlist
UserList := TStringList.Create;
finalization
UserList.Free;
end.