FoxPro中WindowsAPI的调用
dll可以说是Windows系统的基础。在Windows系统或Windows应用系统执行过程中,外部DLLS往往支持其所需的功能,如控制屏幕、打印机、鼠标、键盘等设备。如果在设计过程中在系统中重复编写完成这些功能的程序,程序就会太大。还有一点就是这些工作函数库具有共享功能,也就是说,这些属于Windows函数库的函数可以通过使用Windows程序开发工具在程序中直接访问,以增加开发的系统与Windows系统环境结合的能力。WindowsAPI的400多个API函数中,大部分都可以被用户调用。如果能很好地利用这些WindowsAPI函数,不仅可以减少重复开发,还可以提高应用系统与Windows环境的兼容性和系统性能。
Windows环境下提供的工作函数库主要包括以下三个文件:
GDI。屏幕显示和打印功能。
用户。EXE-鼠标,键盘,通讯口,声音和时钟功能。
内核。文件和内存管理(核心部分)功能。
FOXTOOLS。FLL是FOXPRO为Windows提供的访问WindowsAPI函数的动态连接函数库。
它提供了以下两个函数:
regfn ()-Windows API函数注册函数。
callfn ()-Windows API函数调用函数。
要使用WindowsAPI函数,首先要用RegFn()函数注册该函数,注册成功后再用CallFn()函数调用。reg()和CallFn()的语法如下。RegFn(<函数名>,<参数类型>,<返回类型>,[DLL名]) CallFn(<函数号>,[<参数1 >,<参数2 >)....])
参数说明:
函数名是要调用的API函数的函数名。
Argment Types是要调用的API函数的参数类型描述。
Return Types是对要调用的API函数的返回值类型的描述。
DLL name是您要调用的API函数所在的动态连接库的名称。必须包括扩展名,例如。DLL或。DLL或。exe(扩展名在GDI.EXE、USER.EXE和内核中可以省略。EXE)。
{fnnum >是用RegFn()成功注册的函数,即RegFn () [< arg1 >,< arg2 >的返回值...]]是一个参数序列。请注意,参数类型必须与用RegFn()注册的类型一致。
如果向RegFn()注册一个WindowsAPI函数成功,将返回一个数值;如果找不到指定的< DLLNAME >,它将返回-1,并出现Windows错误窗口。所以,如果让WindowsAPI函数,一定要确保所调用函数所在的动态连接函数库存在,并且函数调用格式正确。传递参数CallFn()的默认方式是传递值。如果要将其更改为地址,应该在参数前添加@ mandatory符号。我曾经用WindowsAPI的SwapMouseButton()函数换过鼠标的左右键,因为鼠标左键不好用。下面举个例子来说说RegFn()和CallFn()的用法。
SwapMouseButton()的语法如下:
SwapMouseButton(bool bswap)当bs WAP为真(1)时,切换鼠标的左右键,为假(0)时,
将左右键恢复为正常设置。
交换流程SwapMouse.prg
参数交换
将库设置为sys (2004)+"FOXTOOLS。FLL"
&&连接到foxtools.fll库
fn = regfn(" Swapmousebutton "," I "," I "," USER。EXE ")
& & register Swapmousebutton
if fn =-1
wait windows "注册失败!"Nowait
将库设置为
return
endif
& &注册成功
result = callfn (fn,swap)
将库设置为
return
0条评论