delphi怎麼動態呼叫dll中的過程,而不是函式

時間 2022-09-01 08:40:03

1樓:匿名使用者

不太明白你的意思,但據我的理解,過程與函式從本質上說是一樣的,過程可以視為沒有返回值的函式。

2樓:匿名使用者

函式和過程呼叫方法是一樣的啊…… 在dll中的函式和過程最後加入stdcall;

3樓:匿名使用者

不是太理解你的意思,猜下,不知你問的是不是有關hook的?

delphi 怎麼動態呼叫dll中的過程

4樓:達人國王

varform1: tform1;

//過程和函式是一樣的啊~

//1.為了方便使用,首先要定義一個過程的變數,也就是一個指標啦~像下面這樣:

//在var 下面寫

abc:procedure;stdcall; //過程就是沒有返回值的函式哇

acb:procedure(a:longint);stdcall; //過程就是沒有返回值的函式哇

bac:function(a:longint):longint;stdcall;

implementation

procedure tform1.button1click(sender: tobject);

varh:cardinal;

a:longint;

begin

//動態呼叫的時候,這樣子:

//2.首先,用系統api loadlibrary裝入dll檔案,裝入後,返回一個控制代碼吧,當然如果本來就有的話,可以用getmodulehandle

h:=loadlibrary('sfc.dll'); //sfc.dll也就是你要裝入dll檔名了

//3.上面取得一個控制代碼之後,就可以用這個控制代碼來做事了。 系統api getprocaddress用來取得dll上面某個函式的地址(指標啦),

abc:=getprocaddress(h,'dllproc1'); // dllproc1是dll內的函式(過程也是一樣的),但注意大小寫,是敏感的

acb:=getprocaddress(h,'dllproc2');

bac:=getprocaddress(h,'dllproc3');

//4.現在就可以像普通呼叫函式(過程)使用它了

abc;

acb(12);

a:=bac(12);

form1.caption:=inttostr(a);

end;

5樓:匿名使用者

實際上,dll和delphi的單元檔案差不多,不同的是一個單元檔案,主單元可以呼叫其中的任意一個方法(函式和過程),但對dll確只能從它的入口(函式或過程)進入該dll.單元檔案可以操作主單元介面上的控制元件,但dll肯定不能這樣做.一個dll可以有多個入口,入口可以是函式也可以是過程,你要呼叫它的過程,你就把該過程指定為入口就行了.

不知對不對.

6樓:

dll需要給出介面函式的,沒有介面函式怎麼呼叫?

delphi怎麼動態呼叫dll?

delphi怎麼動態呼叫dll返回字串

7樓:御姐蘿莉

比如你dll裡面的函式是function getstr(str: pchar): integer;

主程式裡就是:

delphi/pascal code

varteststr: pchar;

begin

getmem(teststr, 100); //字串長度,自己設定getstr(teststr);

//使用

freemem(teststr);

end;

delphi簡單呼叫dll

C 寫DLL易語言呼叫問題,C 寫DLL易語言呼叫問題

在dll.def檔案寫 exports add在dll.cpp檔案寫 int stdcall add int a,int b 在易語言中插入dll命令 版本 2 dll命令 dll命令1,整數型,dll.dll add 引數 a,整數型 引數 b,整數型 1.在程式前面加一行 pragma comm...

C可以使用C 的Dll庫嗎?函式如何呼叫

顯然是可以的.拿一個最簡單的例子呼叫messagebox這個api函式 public delegate int delegatemessagebox intptr hwnd,string lpstring,string lpcaption,int type intptr hmodule kernel...

delphi發展怎麼樣,delphi 這幾年發展的怎麼樣了

什麼樣的公司,還在用delphi,主要是來維護的吧 要不就是和工控類相關的,不可否認delphi 工控 不適為一個ok組合。delphi入門容易,成為高手難,需要深入研究vcl,具有真正oop的程式設計思想 學會抽象 但不論學哪門語言,uml都是需要補充的一門工具。感覺本身不矛盾,可以用自己的時間學...