谁可以教教我使用动态DLL!(200分)

  • 主题发起人 主题发起人 光华
  • 开始时间 开始时间

光华

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序运行中使用DLL,例如让DLL可以做1+1=2,在程序运行其间调用DLL,并运行DLL中1+1<br>这个语句,DLL和程序中应该怎样做啊。
 
我没弄明白你的确切意思,如果是动态调用的话很简单:<br>type TAddCaculate=function(var i,j:Integer):Integer;//定义函数指针<br><br>var<br>&nbsp; hDll:Thandle;<br>&nbsp; AddCaculate:TAddCaculate;<br>&nbsp; J:Integer;<br>begin<br>&nbsp; hDll:=LoadLibrary('aaa.dll');<br>&nbsp; if hDll&gt;32 then<br>&nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;@AddCaculate=getProcessAddr('AddCaculate');<br>&nbsp; &nbsp; &nbsp;j:=AddCaculate(1,1);<br>&nbsp; &nbsp; &nbsp;end;<br>&nbsp; Freelibrary('aaa.dll');<br>end;<br>
 
getProcessAddr这个函数名可能不对,自己看看吧。
 
用Delphi创建一个DLL是十分简单的<br><br>library dll1;<br>uses SysUtils,Classes;<br><br>function Test1(a,b:integer):integer;<br>begin<br>Result:=a+b;<br>end;<br><br>exports<br>Test1 index 1;<br><br>begin<br>end. <br><br>  在这个DLL里我们声明了一个加法函数,然后用exports语句输出它,只有被输出的函数或过程能被其他程序调用。exports语句后的语法是:<br>&nbsp; 函数名 [index &lt;n&gt;],index &lt;n&gt;是为函数手工指定索引号,以便其他程序确定函数地址;也可以不指定,如果没有使用Index关键字,Delphi将按照exports后的顺序从1开始自动分配索引号。现在我们可以调用这个DLL了,下面给出一个实例,运行后form1的标题将变成“1+2=3”:<br><br>声明部分:function Test1(a,b:integer):integer;external 'dll1';<br>       注意此处是大小写敏感的。<br>运行部分:form1.caption:='1+2='+inttostr(test1(1,2)); <br>
 
我的意思不是在DLL中获得数据。比如在DLL中运行扫描注册表的工作,在程序中启动这<br>项工作这样。
 
你先把问题说清楚,大家看不明白,怎么回答你!
 
我做的是类似插件那样,让DLL完成一些工作,比如说是检测一个文件存在,在程序中动态<br>使用这个DLL,应该怎样写这个DLL,和在程序中怎样写?
 
还不是一样的???<br>function PASSWORD:pchar;far; external 'MIMAPROJ.dll';这个引用DLL单元!<br>var username:pchar;<br>begin <br>username:=password;<br>~~~~~~~~~~~~~~~~~~~这是调用PASSWORD函数
 
后退
顶部