中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > VFP
VFP中常用WIN32API函数调用事例
作者:未知 时间:2005-08-07 21:03 出处:编程爱好者网站 责编:chinaitpower
              摘要:VFP中常用WIN32API函数调用事例
我们在VFP编程时,为了弥补VFP本身功能的不足,常常会用到WIN32API函数
来对VFP的功能行扩展,例如取得系统信息、对注册表进行操作等,但是由于
WIN32API函数是C++的数据结构形式,在调用时与VFP的数据格式有所不同,因此在
调用时往往会产生问题,而目前的一些资料所介绍的大都是VB、DELPHI等语言如
何调用,对VFP如何调用介绍的比较少,更缺少具体的调用事例,下面我分几次
介绍在VFP如何调用WIN32API函数,并就一些常用的WIN32API函数作一介绍,由于
本人水平有限,所介绍的内容,仅供您参考,也欢迎您在我的[请您留言]中共同
探讨:


.................一、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()
来调用。
....下面以具体事例谈谈win32api在Vfp中的运用:

1.利用win32api函数获取指定磁盘的卷标:

Stor 0 to C_var,C_cd,C_qf
C_Var='c:\'
DECLARE INTEGER GetVolumeInformation IN Win32API STRING @, STRING @, INTEGER,;
    INTEGER @, INTEGER @, INTEGER @, STRING @, INTEGER
xx=GetVolumeInformation(C_Var,"",20,@C_var,@C_cd,@C_qf,0,0)
CLEAR DLLS &&释放所有利用DECLARE - DLL命令所装入的动态链接库。
xx<>0 获取指定磁盘的卷标成功,反之则未成功。
C_var=指定磁盘的卷标,是个十进制的数值,与我们在DOS下看到的16进制不同。
C_cd=系统规定的文件名每一部分的长度,是个十进制的数值。
C_qf=文件名的大小写标志,是个十进制的数值。

.....怎么样很简单吧,我们可以把获取的磁盘卷标,用来加密我们的软件,这样
我们的 软件就具有防拷贝的功能了。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有