社区
网络通信/分布式开发
帖子详情
dll 中使用 WebBrowser 错误 “尚未调用 CoInitialize”
司码君
2003-11-23 07:07:55
问题内容如题
请高手赐教
...全文
249
8
打赏
收藏
dll 中使用 WebBrowser 错误 “尚未调用 CoInitialize”
问题内容如题 请高手赐教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
司码君
2003-11-23
打赏
举报
回复
不对!
组件初始时间!?
好了问题我自己解决了!
不过分还是要给 哈哈
方法在我这里 哈哈
lqxmm
2003-11-23
打赏
举报
回复
用ADO就这样。用lovehacker()的方法吧。
myling
2003-11-23
打赏
举报
回复
楼上的方法就是了
原因是在DLL中调用COM,必须先进行初始化
CoInitialize的参数一般为nil
最后记得 CoUninitialize
这两个方法在ActiveX单元中,你可以查看帮助
lovehacker
2003-11-23
打赏
举报
回复
用我的方法吧,记得给分喔!
假如A.EXE调用你的B.DLL,那么在A.EXE的FormCreate事件中加入:CoInitialize(nil);
在FormDestory事件中加入:CoUninitialize;
或者你直接在B.DLL中加上:
Begin
CoInitialize(nil);
end.
记得要uses ActiveX喔!如果还不行,你发帖,我再告诉你新方法,如果可以,先把分加了再说谢谢!
司码君
2003-11-23
打赏
举报
回复
没有解决
saien
2003-11-23
打赏
举报
回复
1.将上面的TADOConnection换成WebBrowser 即可解决.
2.别忘了在工程单元的uses中首位上加sharemem;
saien
2003-11-23
打赏
举报
回复
我也遇到过看下面的代码可以解决:
下面是源码:
Project1.DPR {主叫程序}
Unit1.PAS {主叫程序单元}
Project2.DPR {DLL}
Unit2.PAS {DLL单元}
{---------- DLL 主程序 Project2.DPR ----------}
library Project2;
uses
SysUtils,
Classes,
Unit2 in 'Unit2.pas' {Form1};
{$R *.RES}
{ 下面的语句用于向调用该 DLL的程序提供调用接口 }
exports
DoTest; { 过程来自单元Unit2 }
begin
end.
{---------- DLL中的单元 Unit2.PAS ----------}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, StdCtrls, Menus;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;{ 本地数据库连接 }
Memo1: TMemo; { 用于显示信息 }
private
public
end;
{ 该过程向外提供 }
procedure DoTest(H: THandle; { 获得调用者的句柄 }
AConn: TADOConnection;{ 获得调用者的数据库连接 }
S: string; { 获得一些文本信息 }
N: Integer); { 获得一些数值信息 }
cdecl; { 指定调用协议 }
implementation
{$R *.DFM}
procedure DoTest(H: THandle; AConn: TADOConnection; S: string; N: Integer);
begin
Application.Handle := H; { 将过程的句柄赋值为调用者的句柄 }
{ 上面语句的作用在于, DLL的句柄和调用者的句柄相同,在任务栏中就不会 }
{ 各自出现一个任务标题了。 }
with TForm1.Create(Application) do try{ 创建窗体 }
Memo1.Lines.Append('成功调用'); { 显示一行信息 }
ADOConnection1 := AConn; { 获得数据库连接的实例 }
Memo1.Lines.Append(
ADOConnection1.ConnectionString +
' - ' + S + ' - ' + IntToStr(N)); { 根据得到的参数显示另一行信息 }
ShowModal; { 模式化显示窗体 }
finally
Free; { 调用结束时销毁窗口 }
end;
end;
end.
{---------- 调用者 Project1.DPR,很普通的工程文件 ----------}
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
{---------- 调用者单元Unit1.PAS ----------}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB;
type
TForm1 = class(TForm)
Button1: TButton; { 按此按钮进行调用 }
ADOConnection1: TADOConnection; { 本地数据库连接,将传递给 DLL }
procedure Button1Click(Sender: TObject);{ 调用 DLL}
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ 外部声明必须和 DLL中的参数列表一致,否则会运行时错误 }
procedure DoTest(H: THandle; { 传递句柄 }
AConn: TADOConnection; { 传递数据库连接 }
S: string; { 传递文本信息 }
N: Integer); { 传递数值信息 }
cdecl; { 指定调用协议 }
external 'Project2.dll';{ 指定过程来源 }
{ 调用过程 }
procedure TForm1.Button1Click(Sender: TObject);
begin
DoTest(Application.Handle,
ADOConnection1,
'Call OK',
256);
end;
end.
司码君
2003-11-23
打赏
举报
回复
up
VS2015 MFC
DLL
对话框内
调用
ActiveX控件
在我的其它博客
中
,介绍了mfc
dll
如何
调用
模式对话框与非模式对话框的实现过程。接下来介绍在mfc
dll
中
如果包含有ActiveX控件该如何
调用
了。 我们还是在mfc
dll
的对话框里添加一个ActiveX控件,例如添加一个...
c#winform
使用
Web
Browser
大全
使用
完该控件后一定要
调用
Dispose 方法,以便确保及时释放所有资源。必须在附加事件的同一线程上
调用
Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程。 3、
Web
Browser
使用
下面的成员可以将控件...
COM库
调用
时的初始化:Co
Init
ialize
Co
Init
ialize
(LPVOID),它将以特定参数
调用
Co
Init
ialize
Ex,为当前单元初始化COM库,并标记协同模式为单线程模式。参数必须为NULL。这是关于OLE和COM的问题。 Co
Init
ialize
Ex(LPVOID),新版本,可以用参数指定...
c#winform
使用
Web
Browser
大全[超长文转载]
1、主要用途:
使用
户可以在窗体
中
导航网页。 2、注意:
Web
Browser
控件会占用大量资源。...3、
Web
Browser
使用
下面的成员可以将控件导航到特定 URL、在导航历史记录列表
中
向后和向前移动,还可以加载当前用户...
Delphi
中
Co
Init
ialize
之探究
Co
Init
ialize
(LPVOID),它将以特定参数
调用
Co
Init
ialize
Ex,为当前单元初始化COM库,并标记协同模式为单线程模式。参数必须为NULL。这是关于OLE和COM的问题。Co
Init
ialize
Ex(LPVOID),新版本,可以用参数指定协同...
网络通信/分布式开发
1,593
社区成员
32,963
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章