VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 918|回复: 4

dll包含一个窗体,窗体里面有一个ActiveX控件,其它窗体调用时为什么总说尚未CoInitialize啊

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-21 12:40:01 | 显示全部楼层 |阅读模式
我有一个dll文件,包含一个窗体,窗体里面有一个ActiveX控件,我想在另外一个工程里调用dll中的一个函数,而不想显示dll中的窗体,可系统总是报错:尚未CoInitialize,哪位能告诉我为什么啊?应该怎么实现啊?以下是我Dll包含的窗体里面的一个函数:
procedure Info;
  var
    Form1 : TForm1;
  Begin
      Form1 := TForm1.Create(nil);
      ShowMessage('hello3');
      Form1.Free;
  End;我试了一下,其它空间可以,ActiveX控件就不行,高手指点一下吧!!!
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-6 12:15:01 | 显示全部楼层
在你的窗体pas文件里最后面写如下代码:

initialization
  CoInitialize(nil);
finalization
  CoUnInitialize;

end.
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-7 21:45:01 | 显示全部楼层
procedure Info;
var
  Form1 : TForm1;
Begin
  CoInitialize(Nil);
  Form1 := TForm1.Create(nil);
  ShowMessage('hello3');
  Form1.Free;
  CoUninitialize;
End;
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-10 22:30:01 | 显示全部楼层
对com对象的控制需要CoInitialize 和CoUninitialize的。。。。
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-19 16:15:02 | 显示全部楼层
每调用COM对象的某一个方法时都要调用COINNITIALIZE
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表