在线等待!!!VB中的GetObject函数对应于delphi中的哪个函数??(200分)

  • 主题发起人 netexplorer
  • 开始时间
N

netexplorer

Unregistered / Unconfirmed
GUEST, unregistred user!
最近研究biztalk的一个例子,其中有一个用vb写的com组件,其中有这么一句话:
obj=GetObject(moniker)
其中moniker是一个字符串,传进来为:
sked://computer98!XLANG Scheduler/{A826F746-F442-405D-B50B-5879149F66D2}/ReceiveDoc
这串字符串很奇怪吧,这是biztalk中某个调度的某个port的ID号码。根据书上说,调用这个函数的大意是创建或称得到这个port的实例。然后下面就是调用该实例方法的代码:
obj.ReceiveDoc(Doc)
现在我想把这个com组件用delphi写一编,我试了过了createcomobject 和createoleobject,代码如下
var
obj:variant;
obj:=createoleobject(moniker);
obj.receivedoc(doc);
编译没有问题,但执行的时候,调出一个错误窗口说,非法的类识别符,估计是moniker不是一个类的proid。
那在delphi如何实现vb中类似于getobject的功能呢?
在线等待!!谢谢
如果哪位希望切磋biztalk,请联系我,qq 593423
 
相同的函数名!
 
谢谢你的答复,但是delphi中的getobject函数的参数和vb中的不一样
vb中只需要一个string类型的ProID
而delphi中的getobejct函数原型为:
int GetObject(
HGDIOBJ hgdiobj, // handle to graphics object of interest
int cbBuffer, // size of buffer for object information
LPVOID lpvObject // pointer to buffer for object information
);

应该不是这个吧。
 
delphi的函数应该是 GetActiveOLEObject(const ClassName: string)
比如在vb中
dim obj As Object
Set obj = GetObject("Excel.Application")'取得当前运行的Excel对象
在delphi中
var
v_app:Variant;
v_app:= GetActiveOLEObject("Excel.Application")//取得当前运行的Excel对象

 

Set MyXL = Getobject(, "Excel.Application")
相当于
function CreateOleObject(const ClassName: string): IDispatch;

Set MyXL = Getobject("c:/vb4/MYTEST.XLS")
相当于
调用上面的再打开。
 
这语句
sked://computer98!XLANG Scheduler/{A826F746-F442-405D-B50B-5879149F66D2}/ReceiveDoc
返回的CLASS ID并不是{A826F746-F442-405D-B50B-5879149F66D2}
而应该是ReceiveDoc运行后得到的一个字符串,你应该在
createOleObject 或 GetActiveOleObject 函数中使用这个字符串。
 
我在delphi7中使用过createOleObject,这个函数是不行的,要报错,
GetActiveOleObject 我还没有试,呆会试过了再通报大家。
再问一句,createOleObject 和 GetActiveOleObject有什么区别呢?
 
uses comobj
 
加入 comobj单元,然后用Acad := CreateOleObject('AutoCad.Application');就可以打开
cad了,GetOleObject('AutoCad.Application');就可以引用了已打开的了
 
接受答案了.
 
应是,GetActiveOleObject
 
顶部