Dll中如何调用com对象(100分)

  • 主题发起人 主题发起人 clyql
  • 开始时间 开始时间
C

clyql

Unregistered / Unconfirmed
GUEST, unregistred user!
给位大侠:
在exe中可以用createoleobject引用一个com对象.
可是在dll中使用就报错("coinitial无法调用"),请问DLL
中应如何调用.谢谢!
 
我的问题‘多线程访问OLE自动化对象’相近,
至今无有效解决办法,我也拭目以待。
 
我也关注
 
Call CoInitialize(nil) before Createoleobj()
 
OleCheck(CoCreateInstance(Class_SystemHelp, nil, CLSCTX_ALL, ISystemInfo,
FSystemHelp));
用以上方法我已经成功调用,具体用法参看帮助,(该函数在ActiveX单元有定义)
 
报的错说的不是很明显了么?在Dll中调用Com接口必须先调用CoInitialize函数,加上此函数肯定没问题。
 
把你的代码用CoInitialize(nil);和 CoUninitialize;括起来。
也可用OleInitialize(nil);和CoUninitialize;
 
在工程文件中import一个COM对象,得到一个XXX_TLB.Pas,引用该pas文件,
然后定义一个变量 ,变量类型为接口IXXX,然后调用 CoXXX.Create后,直接可以使用该COM对象。
如希望断开与该COM的连接,只需简单的将接口变量置为Nil即可。

var
a1 : IXXX; // a com object warp class generate by import action.
begin
a1 := CoXXX.Create;
a1.Myfun(....);
a1 := Nil; //disconnect it.
end;
 
多人接受答案了。
 
后退
顶部