转 Windows API 函数在VFP中的运用
2010年07月23日
Windows API 函数在VFP中的运用
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命令所装入的动态链接库。
xx0 获取指定磁盘的卷标成功,反之则未成功。
C_var=指定磁盘的卷标,是个十进制的数值,与我们在DOS下看到的16进制不同。
C_cd=系统规定的文件名每一部分的长度,是个十进制的数值。
C_qf=文件名的大小写标志,是个十进制的数值。
.....怎么样很简单吧,我们可以把获取的磁盘卷标,用来加密我们的软件,这样
我们的 软件就具有防拷贝的功能了。
2.在VFP中利用WN32API函数调用Outlook Express给你的程序建立发送
邮件的链接
..... 利用WN32API函数我们可以在VFP程序中,通过Label标签或Command命令按
钮来达到调用由系统默认的邮件收发软件的目的,也就是建立所谓的链接功能,
在VFP代码中:
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND, STRING,STRING; ........lpszFile,STRING ,STRING ,INTEGER
*申明ShellExecute函数
lpszFile='mailto:cfyns@163.net'
*设定你需要发送的E-mail
=ShellExecute(0,0,lpszFile , 0,0,1)
*调用ShellExecute函数
.....一执行=ShellExecute(),就会弹出书写E-mail的窗体。
3.利用WIN32API函数,防止同一程序被重复执行。
.... 利用WIN32API中的FindWindow()函数取得待测窗口的handle(句柄),其
返回值不等于0,则表示该EXE文件已运行。
VFP代码:
DECLARE INTEGER FindWindow IN WIN32API STRING,STRING
LOCAL cTitle
cTitle=_screen.caption
if FindWindow(0,cTitle)0
...=messagebox("程序已运行,无需重复!",48)
endif
注意:FindWindow()函数是取得窗口的caption,如果caption在程序的运行过
程中已经改变,则达不到目的。
4.利用WIN32API函数,关闭或重新启动你的电脑
VFP代码:
DECLARE INTEGER ExitWindowsEx IN USER32.DLL INTEGER , INTEGER
=ExitWindowsEx(1,1) &&关闭系统
如果:=ExitWindowsEx(2,1) &&重新启动系统
如果:=ExitWindowsEx(0,0) &&进入登入者身份对话框
.5.在VFP中利用WN32API函数获取当前所有逻辑驱动器
利用GetDriveType、GetLogicalDriveStrings函数,我们可以很快找到
当前所有逻辑驱动器的根驱动器路径。下面介绍两种用法:
========================== ======
(1) 利用GetDriveType函数:
Declare integer GetDriveType in "kernel32" String
Dgs=0
For I = 65 To 90
vName=Chr(I) + ":"
Lx=GetDriveType(vName)
Do Case
Case Lx=2
Dgs=Dgs+1
wait wind '这是个软盘'
Case Lx=3
Dgs=Dgs+1
wait wind '这是个硬盘'
Case Lx=4
Dgs=Dgs+1
wait wind '这是个可移去式驱动器或网络驱动器'
Case Lx=5
Dgs=Dgs+1
wait wind '这是个光盘'
Case Lx=6
Dgs=Dgs+1
wait wind '这是个RAM盘'
Endc
Endf
Wait wind '本机共有:'+str(Dgs)+'个驱动器'
=================================
(2) 利用GetLogicalDriveStrings函数:
Declare integer GetLogicalDriveStrings in "kernel32" Long, string @cc
CC=Spac(81)
=GetLogicalDriveStrings(81,@cc)
*CC中返回了这样的字符串"a:\ c:\ d:\ e:\ f:\ "每个名字都用一个NULL字符
分隔,在最后一个名字后面用两个NULL表示中止。
X=(len(allt(cc))-1)/4 &&x中包含本机逻辑驱动器个数
*如果你想知道每个具体的驱动器名,则写如下代码:
Dime Dve(X)
For I=1 to X
Dve(I)=Subs(CC,1,3)
CC=Subs(CC,5)
Endf
*这样在Dve这个数组里就是每个驱动器的盘符及":\" 了。
*如果你还想知道每个驱动器的类型,则再添加和改写如下代码:
Declare integer GetDriveType in "kernel32" String
Dime Dve(X,2)
For I=1 to X
Dve(I,1)=Subs(CC,1,3)
Lx=GetDriveType(Dve(I,1))
Do Case
Case Lx=2
Dve(I,2)='软盘'
Case Lx=3
Dve(I,2)='硬盘'
Case Lx=4
Dve(I,2)='可移去式驱动器或网络驱动器'
Case Lx=5
Dve(I,2)='光盘'
Case Lx=6
Dve(I,2)='RAM盘'
Endc
CC=Subs(CC,5)
Endf
.6.在VFP中利用SetLocalTime函数调用设置系统日期或时间
set date ansi
set century on
set hours to 24
*假定设置系统日期、时间为:1999,9,1
nDate=ctod('1999-09-01')
oldtime=TIME() &&取当前时间
nHo=VAL(subs(oldtime,1,2)) &&取当前时间-时
nSe=VAL(SUBSTR(oldtime, 4, 2)) &&取当前时间-分
nMi=VAL(SUBSTR(oldtime, 7, 2)) &&取当前时间-秒
nMM=VAL(RIGHT(oldtime, 2)) &&取当前时间-毫秒
cBuf=h2str(YEAR(nDate))+h2str(MONTH(nDate))+h2str(DOW(nDate) - 1)+;
h2str(DAY(nDate))+h2str(nHo)+h2str(nSe)+h2str(nMi)+h2str(nMm)
*&&将转换后的二进制字符连接
DECLARE SHORT SetLocalTime IN win32api STRING SystemTime
=SetLocalTime(cBuf) &&设置系统日期
Retu
*====以下是将十进制转换为二进制的自定义函数
Function h2str
PARAMETERS Zhsz
PRIVATE Fhz
Fhz=Chr(Zhsz%256)+Chr(Zhsz/256)
RETURN Fhz
好了,就这么简单,并不象有些例子讲的那样复杂,至于如何设置系统时间,
我想通过上面的例子,自己也会了吧
.... ... ... 待续
7.在VFP中利用WN32API函数操作系统[控制面板]
在VFP中,我们可以利用WIN32API的WinExec函数调用各种外部程序,下面是我整
理的利用WinExec函数控制WIN95/98操作系统的[控制面板]各项功能(43种)的大全:
在VFP中代码中:
Declare integer WinExec in "kernel32" string,integer
*只需申明WinExec函数一次,即可选择如下控制面板各项功能:
1.启动控制面板
x=winexec('rundll32.exe shell32.dll,Control_RunDLL',9)
2.辅助选项 属性-键盘
x=winexec('rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1',9)
3.辅助选项 属性-声音
x=winexec('rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2',9)
4.辅助选项 属性-显示
x=winexec('rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3',9)
5.辅助选项 属性-鼠标
x=winexec('rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4',9)
6.辅助选项 属性-常规
x=winexec('rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5',9)
7.添加/删除程序 属性-安装/卸载
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Appwiz.cpl,,1',9)
8.添加/删除程序 属性-Windows安装程序
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Appwiz.cpl,,2',9)
9.显示 属性-外观
x=winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2',9)
10.显示 属性-设置
x=winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3',9)
11.添加/删除程序 属性-启动盘
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Appwiz.cpl,,3',9)
12.显示 属性-背景
x=winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0',9)
13.显示 属性-屏幕保护程序
x=winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1',9)
14.Internet 属性-常规
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,0',9)
15.Internet 属性-安全
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,1',9)
16.Internet 属性-内容
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,2',9)
17.Internet 属性-连接
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,3',9)
18.Internet 属性-程序
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,4',9)
19.Internet 属性-高级
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,5',9)
20.区域设置 属性-区域设置
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,0',9)
21.区域设置 属性-数字
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,1',9)
22.区域设置 属性-货币
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,2',9)
23.区域设置 属性-时间
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,3',9)
24.区域设置 属性-日期
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,4',9)
25.游戏控制器-一般
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Joy.cpl,,0',9)
26.游戏控制器-高级
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Joy.cpl,,1',9)
27.鼠标 属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Main.cpl',9)
28.多**** 属性-音频
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,0',9)
29.多**** 属性-视频
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,1',9)
30.多**** 属性-MIDI
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,2',9)
31.多**** 属性-CD音乐
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,3',9)
32.多**** 属性-设备
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,4',9)
33.调制解调器 属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Modem.cpl',9)
34.网络
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Netcpl.cpl',9)
35.密码 属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Password.cpl',9)
36.扫描仪与数字相机 属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Sticpl.cpl',9)
37.系统 属性-常规
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,0',9)
38.系统 属性-设备管理器
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,1',9)
39.系统 属性-硬件配置文件
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,2',9)
40.系统 属性-性能
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,3',9)
41.日期/时间 属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL timedate.cpl',9)
42.电源管理 属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Powercfg.cpl',9)
43.拨号属性
x=winexec('rundll32.exe shell32.dll,Control_RunDLL Telephon.cpl',9)
注:WIN32API功能调用的函数还很多,比如象操作注册表、MCI(Media Control
Interface)****控制接口等,有的是这方面介绍的资料较多,有的是调用过于
烦琐,所有我不准备继续下去了,欢迎对此有兴趣的朋友,来E-Mail 探讨。
如何利用Win32 API函数隐藏和显示windows系统工具条
先声明FindWindow API函数
DECLARE INTEGER FindWindow IN WIN32API STRING,STRING
mHandle=FindWindow('Shell_TrayWnd','') &&取得系统工具条句柄
再声明ShowWindow API函数
DECLARE INTEGER ShowWindow IN WIN32API integer,integer
=ShowWindow(mHandle,0) &&隐藏
* =ShowWindow(mHandle,1) &&显示
如何利用Win32 API函数隐藏和显示其他运行中的程序
DECLARE INTEGER FindWindow IN WIN32API STRING,STRING
mHandle=FindWindow(0,'计算器') &&取得"计算器"窗口句柄
if mHandle=0
wait wind '没有运行"计算器"程序...'
else
DECLARE INTEGER ShowWindow IN WIN32API integer,integer
=ShowWindow(mHandle,0) &&隐藏"计算器"窗口
* =ShowWindow(mHandle,1) &&显示"计算器"窗口
endi
如何利用Win32 API函数关闭其他运行中的程序
上面讲的是如何利用Win32 API函数隐藏和显示其他运行中程序的窗口,
那么在VFP程序中有没有办法通过代码来关闭其他运行中的程序?下面的代
码就是通过SendMessage AIP函数向其他运行中的程序发出关闭命令,从而
达到关闭它的目的:
DECLARE INTEGER FindWindow IN WIN32API STRING,STRING
mHandle=FindWindow(0,'计算器') &&取得"计算器"窗口句柄
再声明SendMessage API函数:
DECLARE SendMessage IN WIN32API ; integer,integer,integer,integer
=SendMessage(mHandle,16,0,0) &&参数16在这里代表Close命令。
VFP中利用WIN32API函数实现系统文件夹列表
(本文已投稿)
我们在编程中,有时需要用户指定文件夹路径,在VFP中我们往往会用GETDIR()来供用
户选择,但GETDIR()提供的文件夹列表是“选择驱动器再在相应的驱动器中选择相应文件
夹的界面”, 而目前我们常见的是采用类似资源管理器中“所有文件夹”界面: 最上层
是“桌面”,然后是“我的电脑”、驱动器A、C、D...等,见下图:
也许有人会问,是不是又在介绍.OCX控件?如果不是在VFP中能实现这样的文件夹
列表吗?
要实现这样的文件夹列表,我们得先了解三个WIN32API函数:
1、FindWindow &&获取窗口句柄
2、SHBrowseForFolder &&显示文件夹夹列表窗
3、SHGetPathFromIDList &&获取用户选择的文件夹名
☆FindWindow 这个API函数不用介绍了吧,在如何防止程序重复运行中介绍过。
☆SHBrowseForFolder 函数是实现文件夹列表功能的关键,在API帮助里是这样写的:
Displays a dialog box that enables the user to select a shell folder.
WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(LPBROWSEINFO lpbi)
typedef struct _browseinfo {
HWND hwndOwner; // see below
LPCITEMIDLIST pidlRoot; // see below
LPSTR pszDisplayName; // see below
LPCSTR lpszTitle; // see below
UINT ulFlags; // see below
BFFCALLBACK lpfn; // see below
LPARAM lParam; // see below
int iImage; // see below
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
或许您注意到了在这个函数里用到了一个BROWSEINFO类型,此类型包含了列表框使
用的一些参数,比如:当前窗口句柄(hwndOwner)、从何根路径开始展开文件夹(pidlRoot)、
目录树上方的标题(lpszTitle)等。
在VFP中能否声明成功这个函数的关键是如何定义这个BROWSEINFO类型参数,从这
个类型中我们可以看出它是有数值型和字符型混合组成的,而VFP没有定义结构类型的语
句,这也是很多API无法在VFP声明和调用的愿因所在,那么我们又如何定义这个类型呢?
抓住问题的关键,忽略次要因素,很多问题往往就可以解决了,在这里我们只要告
诉这个函数:列表框显示在哪个主窗口里,其它的参数一概忽略,这个函数即可声明成
功。那我们可以看出,在这里我们只要定义hwndOwner(数值型) 这一个参数,然后
告诉SHBrowseForFolder 就可直接调用了。能行吗?您只要一 试就知道了。
遗憾的是其它参数就只能忽略了,好在并不影响调用的结果,见上图。
☆SHGetPathFromIDList 函数负责取回用户在列表框中选择的结果。当我们调用
SHBrowseForFolder API函数后,如果调用成功,则返回一个数值型的指针,这个指针
如果是NULL,表示用户按了取消按钮,否则返回一个非0的指针值供
SHGetPathFromIDList 函数使用,以取回具体的路径名。
三个函数介绍完了,那么在VFP代码中如何写呢? 假如我们有一个表单,上面有一个
Command1按钮和Label1标签,我们就在 Command1.Click事件中这样写: ============================================================================
Declare integer FindWindow IN WIN32API String,String
Declare integer SHBrowseForFolder in "shell32.dll" integer @
*注意integer @ 中的这个“@”符号,千万不可省略,否则无法调用成功,下同。
Declare integer SHGetPathFromIDList in "shell32.dll" integer,String @ cTitle=_screen.caption &&取当前主窗口标题。
hOwner=FindWindow(0,cTitle) &&取当前主窗口句柄
pidl = SHBrowseForFolder(hOwner) &&如果成功,将显示上图列表框,供用户选择,
&&并将选择后的列表框指针,返回给pidl变量。
if not ISNULL(pidl)
mpath=spac(512) &&变量mpath预留512个空字符。
=SHGetPathFromIDList(pidl,@mpath) &&如果成功,用户选择的路径名,将自动
*填入mpath变量中。
thisform.Label1.Caption=mpath &&显示用户选择的路径名。
endi
===========================================================================
这样当我们一按Command1按钮,即可看到上图的列表了。
如果您看了上面的介绍,还不能达到目的,这里有实例下载。
本文介绍的代码在WIN95/98、中文VFP3.0 - 6.0中通过。
/**/
发表评论
-
java与flex通信
2012-01-20 01:26 449java与flex通信 2010年10月22日 一、准备 ... -
Flex是咋回事之三 谁用谁知道
2012-01-20 01:26 542Flex是咋回事之三 谁用谁知道 2010年09月21日 ... -
Flex数据绑定陷阱(二)
2012-01-20 01:26 550Flex数据绑定陷阱(二) 2010年08月10日 尝试 ... -
Flex 数据易犯错误: 常见误用和错误
2012-01-20 01:26 509Flex 数据易犯错误: 常见 ... -
关于Flex 的渲染器的总结
2012-01-20 01:26 712关于Flex 的渲染器的总 ... -
经典的串口调试助手源代码(一)
2012-01-19 09:16 365经典的串口调试助手源代码(一) 2011年05月26日 ... -
经典的串口调试助手源代码(一)
2012-01-19 09:16 659经典的串口调试助手源代码(一) 2011年04月26日 ... -
VB-2.1
2012-01-19 09:16 548VB-2.1 2011年09月26日 Option E ... -
VB窗口图表化
2012-01-19 09:16 527VB窗口图表化 2011年04月20日 '本模块为实现托 ... -
显卡的构成
2012-01-17 01:49 709显卡的构成 2011年06月18日 显卡的基本构成 ... -
<<游戏是这样写成的>>(OpenGL ES,Objc++,MD2模型显示,粒子系统)
2012-01-17 01:49 583>(OpenGL ES,Objc++,MD2模型显示,粒 ... -
怎样用OpenGL在某一位置上写字符串?
2012-01-17 01:49 554怎样用OpenGL在某一位置上写字符串? 2011年11月2 ... -
OpenGL开发库的详细介绍
2012-01-17 01:49 629OpenGL开发库的详细介绍 ... -
是傻频日志呵阡啄凛仄
2012-01-15 20:59 527是傻频日志呵阡啄凛仄 2012年01月09日 刘 ... -
???
2012-01-15 20:59 457??? 2012年01月10日 ... -
我的日志
2012-01-15 20:59 492我的日志 21小时前 ... -
我的日志
2012-01-15 20:59 442我的日志 2012年01月14日 护卫队的战士C ... -
BusyBox 简化嵌入式 Linux 系统 (转载)
2012-01-15 20:59 707BusyBox 简化嵌入式 Linux 系统 (转载) 20 ...
相关推荐
专为VFP编的API教程 Windows API 在 VFP 中的应用示例
VFP中API函数调用实例.帮助提高VFP水平.
VFP调用WindowsAPI函数(精品)
VFP函数大全VFP函数大全VFP函数大全VFP函数大全VFP函数大全
国外的一个在线查看API函数在VFP 中使用的网站,很多东西值得借鉴。
在VFP中调用Windows API编程示例,全部文档来自于网络,个人只是整理了一下,以方便查阅! PDF格式,高清文字版。
Windows API 在 VFP 中的应用示例 如:检查网络状态、设置异形窗体等。
调用 API 时,如果出错 可用 GetLastError() 取得错误的信息代码,但是还有查找错误代码对应的中文信息,很是麻烦,故写了个DLL 来获取API调用时的错误信息: 调用方法 If 这里需要判断是否发生错误的API函数调用 ...
vfp自定义函数集 汉字处理
这是本人在VFP中学习连接FTP服务器做的一个FTP客户端控件类,有类的说明文档
是Win32API的封装 部分函数取自网上开源算法 在相关函数中均有注明 ">MyFll是专为Microsoft Visual FoxPro设计的扩展库 部分函数来自任明汉 RMH myF1论坛 前辈提供的myDll代码翻译而成 由于很多功能利用VFP处理比较...
API_VFP使用手册 Windows消息函数,共一页。第一页
VFP8.0函数与命令大全 VFP中文帮助
取得系统所有硬盘参数.prg 利用API函数调用Windows格式化磁盘界面.prg 获取文件名.prg 隐藏任务栏.prg 另存为.prg
vfp进制进制转换,二进制转十进制,十进制转二进制
vfp中的全部的函数,包括CALL CASE COPY STRUCTURE
apiviewer_vfp.zipapiviewer_vfp.zipapiviewer_vfp.zip
VFP-MyFll函数库及帮助文件 MyFll是专为Microsoft Visual FoxPro设计的扩展...部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp1的库文件,理论上可以应用于VFP6 7 8 9版本。
vfp6.0函数大全 收集vfp6.0的所有函数