呼叫外部 DLL 中的函式

2021-04-18 07:20:40 字數 2681 閱讀 3407

//早繫結

unit unit1;

inte***ce

uses

windows, messages, sysutils, variants, classes, graphics, controls, forms,

dialogs, stdctrls;

type

tform1 = class(tform)

button1: tbutton;

procedure button1click(sender: tobject);

private

public

end;

var form1: tform1;

//mb 函式的宣告:

function mb(hwnd: hwnd; lptext, lpcaption: pchar; utype: uint): integer; stdcall;

implementation

//function mb(hwnd: hwnd; lptext, lpcaption: pchar; utype: uint): integer;

// stdcall; external user32 name 'messageboxa';

//function mb(hwnd: hwnd; lptext, lpcaption: pchar; utype: uint): integer;

// stdcall; external 'user32.dll' name 'messageboxa';

//function mb(hwnd: longword; lptext, lpcaption: pchar; utype: longword): integer;

// stdcall; external 'user32.dll' name 'messageboxa';

//function mb(hwnd: cardinal; lptext, lpcaption: pchar; utype: cardinal): integer;

// stdcall; external 'user32.dll' name 'messageboxa';

//function mb(hwnd: cardinal; lptext, lpcaption: pchar; utype: cardinal): integer;

// stdcall;

function mb; external

'user32.dll' name 'messageboxa';

//呼叫測試:

procedure tform1.button1click(sender: tobject);

var t,b: pchar;

begin

t := '標題';

b := '內容';

mb(0,b,t,0);

end;

end.

//晚繫結unit unit1;

inte***ce

uses

windows, messages, sysutils, variants, classes, graphics, controls, forms,

dialogs, stdctrls;

type

//晚繫結,也就是動態呼叫外部函式主要用以下三個命令:

//loadlibrary:獲取 dll

//getprocaddress:獲取函式

//freelibrary:釋放

//定義乙個過程型別,引數要和需要的函式一致

tmb = function(hwnd: hwnd; lptext, lpcaption: pchar; utype: uint): integer; stdcall;

tform1 = class(tform)

button1: tbutton;

procedure button1click(sender: tobject);

procedure formcreate(sender: tobject);

procedure formdestroy(sender: tobject);

private

mb: tmb;

inst: longword;

public

end;

var form1: tform1;

implementation

procedure tform1.formcreate(sender: tobject);

begin

inst := loadlibrary('user32.dll');

if inst <> 0

then

mb := getprocaddress(inst, 'messageboxa');

end;

//呼叫測試:

procedure tform1.button1click(sender: tobject);

var t,b: pchar;

begin

t := '標題';

b := '內容';

mb(0,b,t,0);

end;

procedure tform1.formdestroy(sender: tobject);

begin

freelibrary(inst);

end;

end.

呼叫外部 DLL 中的函式 2 晚繫結

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls type 晚繫結,也就是動態呼叫外部函式主要用以下三個命令 loadlibrary ...

loadrunner 呼叫外部dll

dll函式編寫 c 裡新建工程class library 本人是用vs2005,在vs6貌像是 win32 dynamic link library 建立了乙個叫lrloaddll的工程,在lrloaddll.cpp裡編寫以下 define lrloaddll declspec dllexport ...

Qt之呼叫外部DLL

宣告 事先我已經自己動手寫了乙個簡單的dll檔案 mydll.dll c版介面的。首先,從dll中匯出了導入庫 lib 檔案,dll中有兩個函式,原型如下 void helloworld 函式內部呼叫win32 api,功能是彈出乙個helloworld提示框 int add int a,int b...