服务器A 运行一个COM服务EXE程序(只运行一个进程)
所有客户端都运行一个COM应用程序(只运行一个进程),保存着本地用户的一些信息。
多个客户端的COM应用程序能否与COM服务EXE程序通信?
怎样与它通信呢?(我需要的不是在客户端创建一个远程实例,而是要客户端与服务已经存在的实例通信)分不够可再加,只要能解决问题!顶者有分!
所有客户端都运行一个COM应用程序(只运行一个进程),保存着本地用户的一些信息。
多个客户端的COM应用程序能否与COM服务EXE程序通信?
怎样与它通信呢?(我需要的不是在客户端创建一个远程实例,而是要客户端与服务已经存在的实例通信)分不够可再加,只要能解决问题!顶者有分!
DCOM Sample: Calls COM Object in Windows Service from Multiple Clients
分发消息啊,我使着这么做,但是失败了!DrawCtl编译不成功!说抽象类不能事例化
HRESULT Draw(
long x1, long y1,
long x2, long y2,
unsigned long col)
{
T* pT = (T*)this;
pT->Lock();
HRESULT hr = S_OK;
IUnknown** pp = m_vec.begin();
IUnknown** ppEnd = m_vec.end();
while (pp < ppEnd && hr == S_OK)
{
if (*pp != NULL)
{
IDrawServ* pIDrawServ = (IDrawServ*)*pp;
//给IDrawServ添加一个属性,在这根据这个属性自动分发消息,可是失败了,能不能这么做啊?
long n;
pIDrawServ->get_XXX(&n);
if (n==1)
hr = pIDrawServ->Draw(x1, y1, x2, y2, col);
}
pp++;
}
pT->Unlock();
return hr;
}
楼主说的“DrawCtl编译不成功!说抽象类不能事例化”,可能是因为你引用的是头文件。
应该用类似的代码引用
#import "DrawCtl.tlb" no_namespace
这个问题我也遇到过。
楼主可以试一下。