着急: 调用dll老是报错(100分)

  • 主题发起人 主题发起人 songbo_pp
  • 开始时间 开始时间
S

songbo_pp

Unregistered / Unconfirmed
GUEST, unregistred user!
dll工程中声明的一个函数,如下,功能是调用一个浏览器;
procedure launchExplorer();stdcall;
var
IE : Variant;
begin
IE := CreateOleObject('InternetExplorer.Application');
end;

编译我通过了,但是我在调用时老是报错,“EOLEsysError with message 尚未调用CoInitilization”
是不是dll不能调用OLE?

 
com libary没有初始化

uses activex;
...
initialization
activex.CoInitialize(nil);
finalization
activex.CoUninitialize;
 
同意迷糊!
com libary没有初始化
 
我加上了,可是编译都过不了,语法错误,我对ole编程不太熟悉,请大家帮帮我,这是原代码。

library Project2;
uses
SysUtils, Classes, ComObj, activex;
{$R *.res}
procedure launchExplorer();stdcall;
var
IE : Variant;
begin
IE := CreateOleObject('InternetExplorer.Application');
IE.fullScreen := true;
IE.Visible := true;
IE.Navigate('http://www.sina.com.cn');
end;

exports launchExplorer;

initialization
CoInitialize (nil);
finalization
CoUninitialize;
end.
 
新建一个unit ,把你的这个过程和
initialization
CoInitialize (nil);
finalization
CoUninitialize;
写到这个unit里就可以了。
或者这样试试看行不:
library Project2;
uses
SysUtils, Classes, ComObj, activex;
{$R *.res}
procedure launchExplorer();stdcall;
var
IE : Variant;
begin
CoInitialize (nil);
IE := CreateOleObject('InternetExplorer.Application');
IE.fullScreen := true;
IE.Visible := true;
IE.Navigate('http://www.sina.com.cn');
CoUninitialize;
end;

exports launchExplorer;

end.

 
library Project2;
uses
SysUtils, Classes, ComObj, activex;
{$R *.res}
procedure launchExplorer();stdcall;
var
IE : Variant;
begin
CoInitialize (nil);
IE := CreateOleObject('InternetExplorer.Application');
IE.fullScreen := true;
IE.Visible := true;
IE.Navigate('http://www.sina.com.cn');
CoUninitialize;
end;
exports launchExplorer;
begin
end.
 
真是谢谢hongxing_dl和迷糊,I'am so happy,问题解决了。我把CoUninitialize;去掉才可以,要不然调用的时候报'ol332.dll'地址'0ffffff'错误。我觉得这里的水平比csdn要高一些。
现在我想做的更完美一些,想加一个close浏览器的函数,但我不知道如何在dll中保持IE的句柄?
 
多人接受答案了。
 
倒,分居然給了我......
 
只要大家参与就好了 。就是对不起hongxing_dl了
 
汗!慚愧啊
 
后退
顶部