FoxPro中Windows API的呼叫

2021-04-15 09:14:31 字數 2107 閱讀 7984

動態連線函式庫(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

ASP對FoxPro自由表 DBF檔案 的操作

tag aspfoxpro dbf資料庫 一 問題的提出 經常看到網上有朋友問asp對foxpro庫表 dbf 的操作問題,現實中確有許多應用軟體使用dbf表,如何在網路環境中使用這些資料,使很多朋友一籌莫展。本人在乙個小專案中也遇到這個問題,通過查閱資料,多次試驗,初步解決了這個問題,寫出來與大家...

原創 一段利用C 2005操作FOXPRO表的函式

由於工作需要,需要將一些資料儲存到規定結構的foxpro庫中,我採取的方法是這樣的 首先,拷貝標準庫 空庫 到指定的要匯出的資料夾,然後讀取這個拷貝後的檔案到dt1,通過迴圈把dt的資料新增到dt1中,更新dt1。方法笨了一點,有誰有好的建議,可以提一提!下面是函式 五個引數,dt是含有需要匯出資料...

linux中 中括號 中的判斷引數

源自 http www.diybl.com course 6 system linux linuxjs 20081117 151774.html b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e...