收藏 分销(赏)

VFP中调用WIN32API函数的格式.doc

上传人:pc****0 文档编号:8988428 上传时间:2025-03-10 格式:DOC 页数:6 大小:40.50KB
下载 相关 举报
VFP中调用WIN32API函数的格式.doc_第1页
第1页 / 共6页
VFP中调用WIN32API函数的格式.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
VFP中调用WIN32API函数的格式 VFP中调用WIN32API函数的命令主要是: DECLARE – DLL CLEAR DLLS 1.DECLARE - DLL 它用于注册外部 Windows 32 位动态链接库 ( .DLL ) 中的一个函数。 语法: DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName].......[cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...] 说明: cFunctionType 指定该函数返回值的类型,其类型代码如下: SHORT 16 位整数 INTEGER 32 位整数 SINGLE 32 位浮点数 DOUBLE 64 位浮点数 STRING 字符串 FunctionName 指定要注册使用的32位函数名。注意 FunctionName 区分大小写。如果该函数名与Visual FoxPro的保留字相同,应使用AS参数另起别名。 IN LibraryName 指定该函数所在的外部动态链接库文件名,如果LibraryName为:WIN32API时,VFP将依次查找KERNEL32.DLL、GDI32.DLL、USER32.DLL、MPR.DLL及ADVAPI32.DLL等动态链接库文件名。AS AliasName 当API函数的名称与Visual FoxPro的保留字相同时,另取AliasName别名,另取的别名是不区分大小写的。 cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...指定传递给被调用的32位.DLL函数的参数类型及参数名称。其类型代码如FunctionType,如果要以传址方法传递参数则应在参数名前加上@。 2.CLEAR DLLS 释放所有利用DECLARE - DLL命令所装入的动态链接库。 一旦申明WIN32API函数成功,就可以和一般函数一样用 ?xxx()、=xxx()来调用。 例:在VFP中利用WIN32API函数,关闭或重新启动你的电脑。 VFP代码: DECLARE INTEGER ExitWindowsEx IN USER32.DLL INTEGER , INTEGER=ExitWindowsEx(1,1) &&关闭系统 如果:=ExitWindowsEx(2,1) &&重新启动系统 如果:=ExitWindowsEx(0,0) &&进入登入者身份对话框 编程时,经常会用到WIN32API函数来对VFP的功能进行扩展,例如对注册表进行操作、获取系统信息等,但是由于WIN32API函数遵循的是C++的数据结构,在应用时与VFP的数据格式有所区别,因此在调用时容易产生问题,现将有关调用方式详解如下: VFP中调用WIN32API的主要函数是:DECLARE - DLL 它是注册外部 Windows 32 位动态链接库 ( .DLL ) 中的一个函数。 语法: DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...] 参数: cFunctionType 表明 32 位 Windows .DLL 函数是否有返回值。如果函数有返回值,则包含 cFunctionType ,否则省略 cFunctionType。 cFunctionType 可以是以下值: cFunctionType 说明 SHORT 16 位整数 INTEGER 32 位整数 SINGLE 32 位浮点数 DOUBLE 64 位浮点数 STRING 字符串 FunctionName 指定在 Visual FoxPro 中要注册的 32 位 Windows .DLL 函数名。注意 FunctionName 区分大小写。32 位 Windows .DLL 函数名可以与 Win32 API 手册中规定的不同。例如,Messagebox 函数应该命名为 MessogeBoxA(对于单字节字符)和 MessageBoxW(对于 UNICODE)。如果 Visual FoxPro 不能定位 FunctionName 指定的 32 位 Windows .DLL 函数,则将字母 A 追加到函数名尾部,Visual FoxPro 用新的函数名重新搜索。 如果指定的32 位 Windows .DLL 函数与一个 Visual FoxPro 函数同名,或者函数名不是合法的 Visual FoxPro 函数名,则将32 位 Windows .DLL 函数名作为 FunctionName,并用 AS 子句给该函数? 个合法的 Visual FoxPro 名,这点在本主题的后面将要说明。 IN LibraryName 指定外部 Windows .DLL 的名称,该动态链接库包含 FunctionName 指定的 Windows 32 位 .DLL 函数。如果为 LibraryName 指定 WIN32API,则 Visual FoxPro 就在 KERNEL32.DLL、GDI32.DLL、USER32.DLL、MPR.DLL 和 ADVAPI32.DLL 中搜索 32 位 Windows .DLL 函数。 AS AliasName 为一个与 Visual FoxPro 函数同名或不合法的 Windows 32 位 .DLL 函数名指定别名。AliasName 不能是 Visual FoxPro 的保留字或已经由 Visual FoxPro 注册的 Windows 32 位 .DLL 函数名。可使用 AliasName 去调用 Windows 32 位 .DLL 函数。AliasName 不区分大小写。 cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ... 指定传递给 Windows 32 位 .DLL 函数的参数类型。 Windows 32 位 .DLL 函数由 cParameterType 指定需要的参数类型。 cParameterType 可以为下列某一类型: cParameterType 说明 INTEGER 32 位整数 SINGLE 32 位浮点数 DOUBLE 64 位浮点数 STRING 字符串 如果参数不是 Windows 32 位 .DLL 函数所需要类型,Visual FoxPro 产生一个错误。Null 值可以作为字符串传递。 调用函数时,若按引用传递一个参数,必须在这条命令的参数 cParameterType 后面、在调用函数相应变量前面包含 @。如果在 DECLARE 中或在调用函数中没有包含 @,参数就按值传递。有关需要按引用传递参数的 .DLL 函数的详细内容,请参阅《Microsoft Win32 编程指南》。 附注 参数名 ParamName1,ParamName2 等是可选的,Visual FoxPro 或 Windows 32 位 .DLL 函数并不使用它们,它们可以作为函数接收的参数名和参数类型的提示。 说明 在从 Visual FoxPro 调用一个32 位 Windows .DLL 函数前,必须发出带有函数名、包含该函数的 Windows .DLL 名以及函数将要接收的参数类型的 DECLARE 命令。 为了提供向后兼容性,Visual FoxPro 仍支持 FOXTOOLS.FLL(包含在 FoxPro 早期版本中),并允许调用 16 位 .DLL 函数的 Visual FoxPro API 库。在 Visual FoxPro 中,调用 .DLL 函数时使用 DECLARE 是可取的方法。 有关 Windows 32 位 .DLL 函数的详细内容,请参阅《Microsoft Win32 编程指南》中的文档。 执行 DISPLAY STATUS 或 LIST STATUS 可以显示注册函数的名称,执行 CLEAR ALL 或 CLEAR DLLS 可从内存中删除注册函数。 实际应用中的几点体会: 1、在API函数的参数中表明是“//address of”的,相当于在C++的指针地址,在注册时,一定要参数 类型后、在调用函数相应变量前面包含 @,以表明是按引用传递一个参数。 2、对于API函数的参数中类型为LPCTSTR和LPTSTR的函数,在注册时要定义为String类型,其他类型一般均可定义为Integer类型。 3、对于API函数的参数为一个“结构”的话,可定义为一足够大的空格字符串变量,在通过加@按引用来传递这一参数。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服