电竞比分网-中国电竞赛事及体育赛事平台

分享

vfp中API的調(diào)用(foxtool edderg callfn)

 萬古皆空 2009-06-22
: 動(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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多