DLL调用EXE中的函数

时间:2010-01-30 12:18:52  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:////////////////////////////////////////////// dll 中的代码://///////////////////////////////////////////////////////library dllProj;usesWindows, SysUtils, Classes;typeTmyProc=function (msg:PChar):Boolean;// {$R *.RES}function testCalls(i:DWord):Boolean;varp:TmyProc;
  正文:exe 中的函数采用 dll 中的说明,就可以被 dll 调用,代码如下:


//////////////////////////////////////////////////////
// dll 中的代码:
/////////////////////////////////////////////////////////
library dllProj;
uses
Windows, SysUtils, Classes;
type
TmyProc=function (msg:PChar):Boolean;
// {$R *.RES}
function testCalls(i:Dword):Boolean;
var
p:TmyProc;
begin
  @p:=GetProcAddress(GetModuleHandle(nil),'TestExport');
  if @p <> nil then
  p(PChar('调用成功,返回变量是:'+intTostr(i)))
  else MessageBox(0,'调用 exe 内部例程没有成功','信息',MB_OK);
  result:=true;
end;
exports
testCalls index 0 name 'testCalls';
begin
end.




//////////////////////////////////////////////
// exe 中的代码:
////////////////////////////////////////////////////
unit exeUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
TTestProc=function(i:DWord):Boolean;
function TestExport(Msg:PChar):Boolean;
var
Form1: TForm1;
exports
TestExport name 'TestExport';
implementation
{$R *.DFM}
function TestExport(Msg: PChar): Boolean;
begin
  MessageBox(0,Msg,'信息',MB_OK);
  result:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
theHandle:THandle;
MyProc:TTestProc;
begin
  theHandle:=LoadLibrary('dllProj.dll');
  if theHandle <> 0 then
  begin
    @MyProc := GetProcAddress(theHandle,'testCalls');
    if @MyProc <> nil then
    begin
      MyProc(5);
      FreeLibrary(theHandle);
    end
    else MessageBox(0,'exe 在载入 dll 时失败','信息',MB_OK);
  end;
end;
end.  

DLL调用EXE中的函数》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12656.html


关键字:

关于《DLL调用EXE中的函数》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td