?? api調用.txt
字號:
FoxPro中Windows API的調用
□山東 李文強 孟祥富
動態連接函數庫(DLLs)可以說是Windows系統的基礎,Windows系統或Windows的應用系統在執行過程中,常常通過外部的動態連接函數庫支持其所需功能,如控制屏幕、打印機、 鼠標、鍵盤等設備,若在設計過程中,將完成這些功能的程序都重復寫在系統中,就會使 程序過大。另外一點,就是這些工作函數庫具有共享功能,也就是說可以利用Windows程 序開發工具,直接使用這些屬于Windows函數庫的功能,直接在程序中訪問,增加開發的 系統與Windows系統環境的結合能力。WindowsAPI的大約400多個API功能,大部分都可 供用戶調用,若能用好這些WindowsAPI功能,既可減少重復開發,又能提高應用系統對 Windows環境的兼容性和系統性能。
在Windows環境中所提供的工作函數庫主要有下面三個文件:
·GDI.EXE---屏幕顯示及打印功能。
·USER.EXE---鼠標、鍵盤、通信端口、聲音及時鐘功能。
·KERNEL.EXE---文件及內存管理(核心部分)功能。
FOXTOOLS.FLL就是FOXPRO For Windows提供的訪問WindowsAPI函數的動態連接函數庫。
它提供下面兩個函數:
RegFn()———WindowsAPI功能注冊函數。
CallFn()———WindowsAPI功能調用函數。
要使用WindowsAPI函數首先應該用RegFn()函數注冊該函數,注冊成功后再用CallFn()
函數調用之。RegFn()和CallFn()的語法如下。
RegFn(<Function name>,<Argment Types>,<Return Types>,[DLL name])
CallFn(<Fn Num>,[<Arg1>,<arg2>....])
參數說明:
Function name為要調用的API函數的函數名稱。
Argment Types為要調用的API函數的參數類型說明。
Return Types為要調用的API函數的返回值類型說明。
DLL name為您要調用的API函數所在的動態連接函數庫名。必須包括擴展名,如.DLL或.DLL
或.EXE(GDI.EXE、USER.EXE,KERNEL.EXE可省略擴展名)。
{Fn Num>是用RegFn()注冊成功的函數,即RegFn()的返回值
[<Arg1>,<arg2>...])為參數序列,注意參數類型必須與用RegFn()注冊的類型一致。
如果用RegFn()注冊一個WindowsAPI函數成功的話,會返回一個數值,若無法找到指定的 <DLL name>將返回-1,同時出現一個Windows錯誤窗口。所以如果您使用WindowsAPI函 數,您必須保證您所調用的函數所在的動態連接函數庫存在,而且函數調用格式正確CallFn() 缺省傳遞參數的方式為傳值,若要改為傳址,應在該參數前加上@強制符號。
筆者曾經因為鼠標器左鍵不好使而用WindowsAPI的SwapMouseButton()函數對換了鼠標器
的左右鍵,下面就以此為例說一下RegFn()和CallFn()的用法。
SwapMouseButton()的語法如下:
SwapMouseButton(BOOL bSwap)bSwap為真值(1)時將鼠標器左右鍵對換,為假(0)時將
左右鍵恢復正常設置。
對換過程SwapMouse.prg
PARAMETERS Swap
SET LIBRARY TO SYS(2004)+"FOXTOOLS.FLL"
&&連入FOXTOOLS.FLL庫
Fn=RegFn("SwapMouseButton","I","I","USER.EXE")
&&注冊SwapMouseButton
IF Fn=-1
WAIT WINDOWS"注冊失敗!"NOWAIT
SET LIBRARY TO
RETURN
ENDIF
&&注冊成功
Result=CallFn(Fn,Swap)
SET LIBRARY TO
RETURN
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -