手上有一个dll和一份相关的api接口说明书,如何通过delphi封装调用dll中写好的函数?(100分)

  • 主题发起人 主题发起人 iseeks
  • 开始时间 开始时间
I

iseeks

Unregistered / Unconfirmed
GUEST, unregistred user!
我手上有SafeCOM.dll和Safe API接口说明.doc,领导要我用delphi做个控件也好,
做个程序也好,就是能提供调用dll中函数的接口吧,我似乎一点概念都没有噢。
哪位好心人给我一些指点吧,谢谢噢。
最好是做成ocx为后缀的冬冬。
 
这个dll是com组件吗?如果是,则这个本身就是个控件(相当于控件使用)了,你可以
在Delphi的IDE环境里,导入COM组件到控件面板上;
如果是普通的dll文件,你可以在一个单元文件里去封装好了。可以做成一个类的形式
比如,dll有SetName这个函数,你就可以在你的类里声明
TSafeCom = class(TObject)
......
function SetName: Boolean;
......
end;

function SetNameFun: Boolean
stdcall
external 'SafeCom.dll' name 'SetName';
......
function TSafeCom.SetName: Boolean;
begin
Result := SetNameFun;
end;

我只是举个例子,你可以这么来封装。
 
hoho,你回应的速度好快!!!
我还有很大的疑惑噢,你耐心的看噢:
怎么看它是不是com组件啊?我更胡涂了噢~~
就当它是普通的dll吧,其中external 'SafeCom.dll'是去调用dll了吧,
那它怎么知道SafeCom.dll在哪里呀?是不是新建一个project,然后通过import type library
将dll先导入呀?

 
大概是我昨天没有把问题说的很清楚(其实我自己也是一头雾水~~),今天我又和领导问了一下做控件的意图,
我再详细的说说噢:
我问:为什么不能直接用dll呀,比如在网页中先嵌入<OBJECT ID="SafeEngineCtl"... codebase="SafeCOM.dll" ...>,
然后直接在网页中调用SafeEngineCtl.Geta(...)不就可以了吗?
他答:dll是动态链接库,SafeEngineCtl.Geta(...)在网页中不起作用的,
一定要用delphi做个控件,里面包含方法或者函数来调用dll中的Geta(...);
比如做好的控件叫myCtl,控件中包含myGeta(...),在网页中先嵌入<OBJECT ID="lalala"... codebase="myCtl.ocx" ...>,
然后在在网页中通过lalala.myGeta(...)调用安全公司给的SafeCOM.dll中的相应方法来解决问题

呜呜,大概就是这个意思噢
能说的详细一些吗?可以给我比较完整的针对我情况的源码吗?谢谢噢
 
你领导说的嵌入网页的的应该是ActiveX组件。
你手上的的dll可能是普通dll。如果是COM组件(ActiveX组件也属),
可以嵌入页面中。你可以把功能代码封装到COM组件中,但是怎么把
dll中的功能封装到组件中,而且客户端不用下载dll文件的,我就不知道
怎么弄了。因为,你没有dll的源代码,不能把它实现的功能
封装到你的组件中阿!
 
生成一个ActiveX控件,为控件定义和Dll API对应的接口,在接口中调用Dll中的函数就可以了。
 
噢,我用regsvr32试验过了,可以注册的,说明它不是普通的dll,对吧?不过我还是想做个
ocx控件。
我导入后,Activex控件页面上是多了这个冬冬,但是我怎样将它封装成一个ocx控件呀?
 
那你就可以直接在页面里嵌入这个ocx控件啦!你要是再封装,
浏览器就得下载2个ocx文件吗?我没有试验过啊!
 
to wqthai
我手上的是dll控件,不是ocx的,我要把它变成ocx控件
 
这个导入的控件可以正常使用吗?
如果可以,说明这可能就是一activex,看看生成的pas,
按acticex的用法直接在HTML上用用看。
 
这个用Project下的 type lib什么的里面找到这个类型库DELPHI就可以帮你生成一个
PAS吗,对了,楼上的不是爬格子的,怎么做起软件来了?
 
多人接受答案了。
 
后退
顶部