VFP的主要是用于数据库开发,所以开发软件自身配带的功能都是针对数据库开发,对于Windows的管理和系统信息的捕获就很困难了,只能调用OCX或DLL来扩展其功能,下而将详细讲解一下DLL的调用技巧:
调用DLL语法:
Declare 返回值类型 要调用的函数名称 相关DLL或LIB文件 传入参数类开型 [字段名]......有多少个传入参就定多少
举例:要调用User32内的函数Findwindow
Declare Integer FindWindow In User32.DLL String lpClassName, String lpWindowName
这个是基础,但再深入调用DLL时,你会发现有部分DLL的传入参数是一个指针,这种情况如何处理呢.
举例:要调用kernel32内的ProcessIdToSessionId其传入参数SessionID是一个数值型指针,那么声名就要更改一下,在指针的传入参前加入@,其实也不能理解,DLL之所以用指针,最大的原因就是要进行值传递,相当于VB的by ref,指针返来的值可以理解为一个值传递变量,所以VF也要用@来声名该变量是值传递的变量.
Declare Integer ProcessIdToSessionId IN kernel32 integer ProcessID,integer @SessionID
使用时也用@来传入变量
int ProcessID
int SessionID
Er1=ProcessIDToSessionID(ProcessID,@SessionID)
*注:ER1是返回函数是否正常被执行的变量
但VFP有个很大的缺陷,就是不支持定义结构体,所以有很大部份DLL由于要传入结构体参数,而无法被VFP调用.
要查看DLL函数的定义及传入参资料,有一个很好的软件叫Apifox,虽然他是以VB的语法来讲述,但只要对VB语法有简单了解就可以很明名知道在VFP中是如何调用