调用已存在的com对象实例

superliu1122 2005-09-26 10:19:13
怎样在一个程序里调用其他程序里创建的com对象实例啊
比如
我在程序A里面创建了一个com类class1的实例Object1,那在程序B里怎么能调用Object1这个对象呢
我对com不是很熟,但现在急着要用,没办法,希望大家帮帮忙,先谢谢了
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果你编写的是exe形式的组件,无论多少客户端调用CoCreateInstance,都只会创建一个对象,但是要注意并发控制;如果你编写的是一个dll形式的组件,进程A创建了组件后,或者想办法将接口指针交给进程B,或者接受进程B的消息由进程A代为调用组件方法
yey2y 2005-09-26
  • 打赏
  • 举报
回复
我是用ATL模板作的COM,IMyCom是我写的接口名,你可直接套用试一下
HRESULT hr;
IMyCom *Icom = NULL;

// 初始化COM
hr = CoInitialize(0);

if(SUCCEEDED(hr))
{
hr = CoCreateInstance( CLSID_MyCom, NULL, CLSCTX_INPROC_SERVER,
IID_IMyCom, (void**) &Icom);
if(SUCCEEDED(hr))
{


Icom->Plus(m_A, m_B, &m_C);//一个Methed,我的加法试验,
UpdateData(FALSE); //因用的是客户端的资源对话框,如用COM的资源则要用//AfxSetResourceHandle(hr)//
Icom->Release();
}

CoUninitialize();
}
superliu1122 2005-09-26
  • 打赏
  • 举报
回复
这样不会创建新对象吗
那在其他语言比如vb里呢
echoyux 2005-09-26
  • 打赏
  • 举报
回复
ITest * pTest = NULL;
CoInitialize( NULL );
HRESULT hResult = CoCreateInstance( __uuidof(Test), NULL, CLSCTX_INPROC_SERVER, __uuidof(ITest), (void**)&pTest );
1073X 2005-09-26
  • 打赏
  • 举报
回复
/***************************/
这样不会创建新对象吗
/***************************/
我想这个问题应该要看COM的类型,如果是in-process的是要创建新对象的,但是如果是out-of-process的应该不会创建。
希望更清楚的朋友可以给出更准确的解释,关注中......

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧