|
: 動(dòng)態(tài)連接函數(shù)庫(DLLs)可以說是系統(tǒng)的基礎(chǔ),Windows系統(tǒng)或Windows的應(yīng)用系統(tǒng)在執(zhí)行過程中,常常通過外部的動(dòng)態(tài)連接函數(shù)庫支持其所需
-
動(dòng)態(tài)連接函數(shù)庫(DLLs)可以說是系統(tǒng)的基礎(chǔ),Windows系統(tǒng)或Windows的應(yīng)用系統(tǒng)在執(zhí)行過程中,常常通過外部的動(dòng)態(tài)連接函數(shù)庫支持其所需功能,如控制屏幕、打印機(jī)、 鼠標(biāo)、鍵盤等設(shè)備,若在設(shè)計(jì)過程中,將完成這些功能的程序都重復(fù)寫在系統(tǒng)中,就會(huì)使程 序過大。另外一點(diǎn),就是這些工作函數(shù)庫具有共享功能,也就是說可以利用Windows程序開發(fā) 工具,直接使用這些屬于Windows函數(shù)庫的功能,直接在程序中訪問,增加開發(fā)的系統(tǒng)與 Windows系統(tǒng)環(huán)境的結(jié)合能力。WindowsAPI的大約400多個(gè)API功能,大部分都可供用戶 調(diào)用,若能用好這些WindowsAPI功能,既可減少重復(fù)開發(fā),又能提高應(yīng)用系統(tǒng)對(duì)Windows環(huán) 境的兼容性和系統(tǒng)性能。 在Windows環(huán)境中所提供的工作函數(shù)庫主要有下面三個(gè)文件: GDI.EXE———屏幕顯示及打印功能。 USER.EXE———鼠標(biāo)、鍵盤、端口、聲音及時(shí)鐘功能。 KERNEL.EXE———文件及內(nèi)存管理(核心部分)功能。 FOXTOOLS.FLL就是ForWindows提供的訪問WindowsAPI函數(shù)的動(dòng)態(tài)連接函數(shù)庫。 它提供下面兩個(gè)函數(shù): RegFn()———WindowsAPI功能注冊(cè)函數(shù)。 CallFn()———WindowsAPI功能調(diào)用函數(shù)。 要使用WindowsAPI函數(shù)首先應(yīng)該用RegFn()函數(shù)注冊(cè)該函數(shù),注冊(cè)成功后再用CallFn() 函數(shù)調(diào)用之。RegFn()和CallFn()的語法如下。 RegFn(<Functionname>,<ArgmentTypes>,<ReturnTypes>,[DLLname]) CallFn(<FnNum>,[<Arg1>,<arg2>....]) 參數(shù)說明: Functionname為要調(diào)用的API函數(shù)的函數(shù)名稱。 ArgmentTypes為要調(diào)用的API函數(shù)的參數(shù)類型說明。 ReturnTypes為要調(diào)用的API函數(shù)的返回值類型說明。 DLLname為您要調(diào)用的API函數(shù)所在的動(dòng)態(tài)連接函數(shù)庫名。必須包括擴(kuò)展名,如.DLL或.DLL 或.EXE(GDI.EXE、USER.EXE,KERNEL.EXE可省略擴(kuò)展名)。 {FnNum>是用RegFn()注冊(cè)成功的函數(shù),即RegFn()的返回值 [<Arg1>,<arg2>...])為參數(shù)序列,注意參數(shù)類型必須與用RegFn()注冊(cè)的類型 一致。 如果用RegFn()注冊(cè)一個(gè)WindowsAPI函數(shù)成功的話,會(huì)返回一個(gè)數(shù)值,若無法找到指定的 <DLLname>將返回-1,同時(shí)出現(xiàn)一個(gè)Windows錯(cuò)誤窗口。所以如果您使用WindowsAPI函數(shù), 您必須保證您所調(diào)用的函數(shù)所在的動(dòng)態(tài)連接函數(shù)庫存在,而且函數(shù)調(diào)用格式正確CallFn() 缺省 傳遞參數(shù)的方式為傳值,若要改為傳址,應(yīng)在該參數(shù)前加上@強(qiáng)制符號(hào)。 筆者曾經(jīng)因?yàn)槭髽?biāo)器左鍵不好使而用WindowsAPI的SwapMouseButton()函數(shù)對(duì)換了鼠標(biāo)器 的左右鍵,下面就以此為例說一下RegFn()和CallFn()的用法。 SwapMouseButton()的語法如下: SwapMouseButton(BOOLbSwap)bSwap為真值(1)時(shí)將鼠標(biāo)器左右鍵對(duì)換,為假(0)時(shí) 將左右鍵恢復(fù)正常設(shè)置。 對(duì)換過程SwapMouse.prg PARAMETERSSwap SETLIBRARYTOSYS+"FOXTOOLS.FLL" &&連入FOXTOOLS.FLL庫 Fn=RegFn &&注冊(cè)SwapMouseButton IFFn=-1 WAITWINDOWS"注冊(cè)失敗!"NOWAIT SETLIBRARYTO RETURN ENDIF &&注冊(cè)成功 Result=CallFn SETLIBRARYTO RETURN |
|
|