只知道GUID可以调用COM组件吗?(100分)

  • 主题发起人 主题发起人 wzwcn
  • 开始时间 开始时间
W

wzwcn

Unregistered / Unconfirmed
GUEST, unregistred user!
现在学了一点COM,有个问题很郁闷,特来请教各位高手.
创建COM一般大家都会这样:
var test:Itest;
begin

test:=CreateComObject(CLASS_test) as Itest;
test.方法
end;

或者用"import type library",加入tlb生成单元再:
test:=cotest.create;
可是这两种方法都要知道接口再调用,我们用DCOM做三层的时候会用到Dcomconnection或socketconnection连接,设置GUID和主机后就可以这样Dcomconnection.appserver.方法名 调用(不用知道Itest接口),它是怎么实现的?如果我不用这两个组件可以做到吗?
哪位高手给我讲一下,谢谢~~
 
首先声明一下:我也不是特确定。

我记得在VC中有函数是可以实现GUID与ProgID之间进行互换的。是不是可以通过调用这个函数,通过GUID得到对应的ProgID,再象第一种方法一样即可创建COM对象了?
 
我现在觉得挺乱,手头又没有关于COM的资料,或者哪位同志知道关于COM的书介绍一下也行,谢谢
 
深入解析ATL
 
wzwcn,你的问题可能说的不是太明确。
CreateComObject方法的参数本来就是TGUID,因此,你的问题“只知道GUID可以调用COM组件吗?”的答案显然已经为“是!”。
但是,CreateComObject返回的是IUnknown类型的接口,我猜想,你是在寻求一种方法,想让返回的接口自动具有想要的类型(如ITest),这样在编程中就可以有代码提示......
根据我开发和使用COM的经验,这不太容易做到,你只有深入研究Delphi中TDCOMConnection的内部机制。
 
我的意思是象上面的例子,如果我不知道Itest可以调用GUID为CLASS_test的组件吗?再比如如果有人给你一个DLL,就知道GUID,你能否用DLL中的COM组件?好象我说的就是传说的自动化组件
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部