Inno Setup入門(15)—DLL外部庫調(diào)用

Inno Setup入門(15)—DLL外部庫調(diào)用

ID:47886027

大?。?3.87 KB

頁數(shù):4頁

時間:2019-08-07

Inno Setup入門(15)—DLL外部庫調(diào)用_第1頁
Inno Setup入門(15)—DLL外部庫調(diào)用_第2頁
Inno Setup入門(15)—DLL外部庫調(diào)用_第3頁
Inno Setup入門(15)—DLL外部庫調(diào)用_第4頁
資源描述:

《Inno Setup入門(15)—DLL外部庫調(diào)用》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、這里講講如何調(diào)用dll中的函數(shù)。先來一個簡單的例子:[code]varmyPage:TWizardPage;Button:TNewButton;Cnt:Integer;functionGetCurrentProcessId():Integer;external'GetCurrentProcessId@C:WindowsSystem32kernel32.dll';procedureButtonOnClick(Sender:TObject);begin?MsgBox(IntToStr(GetCurrentProcessId()),mbInformation,mb_Ok);?end;p

2、rocedureInitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome,'標(biāo)題:自定義頁面','描述:這是我的自定義頁面');Button:=TNewButton.Create(mypage);Button.Width:=ScaleX(75);Button.Height:=ScaleY(23);Button.Caption:='TNewButton';Button.OnClick:=@ButtonOnClick;Button.Parent:=mypage.Surface;end;運行效果如下:語句:functionGetCu

3、rrentProcessId():Integer;external'GetCurrentProcessId@C:WindowsSystem32kernel32.dll';申明了引用dll的文件、函數(shù)和定義的函數(shù)。許多程序在安裝過程中,會有升級的可能,但是又有個問題就是,當(dāng)前的程序正在運行,這樣就不能達(dá)到升級的效果,因此有必要堅持并能夠結(jié)束指定程序的過程,如何在安裝包中實現(xiàn)呢?其實很簡單,就是調(diào)用dll,關(guān)于dll,可以用C++或者VB編寫,個人推薦用C++,這樣編寫的dll文件似乎在數(shù)據(jù)類型上能夠和pascal更好地融合,代碼很簡單,這里我就不啰嗦了,把重點集中到調(diào)用上,下面是一

4、個例子:[code]var??myPage:TWizardPage;??Button:TNewButton;functionGetPIDByName(pname:string):Integer;external'GetPIDByName@F:CollInnoKP.dllcdeclsetuponly';??functionKillProcess(pid:DWORD):Integer;external'KillProcess@F:CollInnoKP.dllcdeclsetuponly';??procedureButtonOnClick(Sender:TObject);begi

5、n??KillProcess(GetPIDByName('qq.exe'));end;procedureInitializeWizard();begin??myPage:=CreateCustomPage(wpWelcome,'標(biāo)題:自定義頁面','描述:這是我的自定義頁面');??Button:=TNewButton.Create(mypage);??Button.Width:=ScaleX(75);??Button.Height:=ScaleY(23);??Button.Caption:='TNewButton';??Button.OnClick:=@ButtonOnClick;?

6、?Button.Parent:=mypage.Surface;end;程序中引入了KP.dll中的兩個函數(shù),分別是通過進(jìn)程名稱獲取其pid,以及結(jié)束指定pid的進(jìn)程,在這個例子中,點擊按鈕就會結(jié)束QQ的進(jìn)程。請注意調(diào)用過程如果寫的函數(shù)沒自己處理好堆棧問題,則必須使用cdecl?方式,而不是默認(rèn)方式的stdcall,否則可能會出現(xiàn)如下錯誤:?這就是調(diào)用方式不對造成的結(jié)果,這一點需要格外留心。概述前面分兩節(jié)介紹了如何使用dll,這里將對調(diào)用外部或者系統(tǒng)dll做一些綜述。Pascal腳本能調(diào)用外部dll(標(biāo)準(zhǔn)Win32API或者各程序員編寫的dll)中的函數(shù),在調(diào)用外部dll中的函數(shù)前,需要

7、聲明所調(diào)用的函數(shù)原型,使用external聲明dll文件,對于一個Pascal描述的函數(shù)原型,例如functionA(B:Integer):Integer;可以有三種方式調(diào)用:方法一:functionA(B:Integer):Integer;external'?>@';方法二:functionA(B:Integer):Integer;external'?>@

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。