| 概述前面分兩節介紹了如何使用dll,這裡將對調用外部或者系統dll做一些綜述。Pascal指令碼能調用外部dll(標準Win32 API或者各程式員編寫的dll)中的函數,在調用外部dll中的函數前,需要聲明所調用的函數原型,使用external聲明dll檔案,對於一個Pascal描述的函數原型,例如function A(B: Integer): Integer;可以有三種方式調用:方法一:function A(B: Integer): Integer;external '< dll中函數名稱> >@< dll檔案路徑 >';方法二:function A(B: Integer): Integer;external '< dll中函數名稱> >@< dll檔案路徑 > <呼叫慣例>';方法三:function A(B: Integer): Integer;external '<dll中函數名稱>@<dll檔案路徑> <呼叫慣例> <選項>';第一種方法最簡單,這是Pascal指令碼的預設調用方法,呼叫慣例為stdcall,絕大部分的調用都是採用這種方式,當然也可以使用其他的呼叫慣例:cdecl、pascal和register最後一個選項指定了載入dll的方式,可以是下列幾種:delayload通常,Pascal指令碼會在開始的時候檢驗dll函數是否能夠被調用,如果不能,則拒絕執行。為了避免這種現象,可以用該選項指定消極式載入,通常是當你不確定所調用的函數是否在運行時可用,但是這樣做的後果就是,Pascal指令碼會在停用情況下繼續執行但是拋出異常。loadwithalteredsearchpath指明dll存放的檔案夾,讓載入器在這些檔案夾下去搜尋依賴的dll檔案,需要使用標誌LOAD_WITH_ALTERED_SEARCH_PATHsetuponly指明該dll檔案僅在指令碼運行處於安裝時載入。uninstallonly指明該dll檔案僅在指令碼運行處於卸載裝時載入。 |
轉自:http://www.360doc.com/content/13/0327/14/4221543_274236616.shtml