动态连接函数库(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()的用法。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器