社区
VFP
帖子详情
在VFP中如何在API函数调用中使用数组参数?
of123
2003-08-19 02:36:09
调用一个DLL动态库函数,其中一个参数类型是unsigned char *。
在中文操作系统中如果用字符串调用,会返回乱码。
在VB中,C++中都可以通过 Byte 数组来调用此函数,在VFP中不能显式声明变量类型,应该怎样做?
例如:
bm_read(HANDLE dev_id, UC add, UC bytes, UC * buff )
...全文
139
2
打赏
收藏
在VFP中如何在API函数调用中使用数组参数?
调用一个DLL动态库函数,其中一个参数类型是unsigned char *。 在中文操作系统中如果用字符串调用,会返回乱码。 在VB中,C++中都可以通过 Byte 数组来调用此函数,在VFP中不能显式声明变量类型,应该怎样做? 例如: bm_read(HANDLE dev_id, UC add, UC bytes, UC * buff )
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kinlzy
2003-08-19
打赏
举报
回复
收藏收藏!!!
mgan
2003-08-19
打赏
举报
回复
VFP中对API的调用格式
编程时,经常会用到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 不区分大小写。
MyFll Microsoft Visual FoxPro设计的扩展库
此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用
VFP
处理比较烦锁,或无法实现,
使用
此库可有效解决
VFP
的弱项。部分与Win32
Api
同名的函数,是Win32
API
的封装。部分函数取自网上开源算法,在相关函数
中
均有注明。 此源代码
使用
VC6 sp6开发,采用
VFP
9 Sp2的库文件,理论上可以应用于
VFP
6 7 8 9版本。 此库在第一次打开时自动添加智能感应功能已关闭。请在打开后,
使用
FllAddFoxCode()向智能感应库添加所有的函数原型(需要
VFP
7以上),此库存所有函数
使用
VFP
推荐的命名规则,一般可以根据函数名和知能感应的提示
参数
来推测
参数
及返回值。 开发环境可以
使用
FllHelp()函数来检查函数信息: 取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.) 显示Fll的版:?FllGetVersion() 添加智能感应代码:FllAddFoxCode() 版本信息:由于不定期更新,请及时核对版本(右键属性),版本为X.X.X.X,第一位为主版本号,第二位为函数个数,第三位为发布的年份,第四位为日期。当前版本为:1.179.9.811 版权:你可以自由
使用
、散发此函数库及此帮助,包括应用于你的商业软件
中
。在转发时应注意帮助文件于函数库和帮助同在。不得对软件进行破解、反编译等破性或逆向工程。MyFll作者不承担可能由于技术原因或失误给你带来的错误或损失。发现错误可以与作者取得联系共同改进。 感谢:我的帮助论坛http://www.myf1.net/bbs 梅子论坛 http://www.meiz
vfp
.com/bbs 感谢:各位为Myfll做测试、编写帮助的热心网友。 作者:木瓜 ljyit@163.com 函数列表: 硬件相关函数: GetDiskSerial 读取指定硬盘的序列号 GetCpuId 读取CPU的序列号 GetMAC 读取网卡的MAC地址 GetVolumeNumber 读取指写磁盘的卷标 IsDiskInDrive 检查指定磁盘是否就绪 GetPort 读取系统的串口、并口 ComOpen 打开串口 ComWrite 向串口输出信息 ComRead 从串口读取信息 ComClose 关闭串口 GetGUID 获取全球唯一ID AEthernet 枚举网卡的所有信息 加密解密函数: MD5File 计算一个文件的MD5效验和 MD5String 计算一个字符串的MD5效验和 CRC32File 计算一个文件的CRC32效验和 CRC32String 计算一个字符串的CRC32效验和 des 采用DES算法加密或解密一个字符串,长度为8位 des16 采用DES算法加密或解密一个字符串,长度为16位 des24 采用DES算法加密或解密一个字符串,长度为24位 EnDeString 双向加密解密字符串的函数 Encrypt 双向加密解密字符串 RSACalc RSA计算函数 RSAGen 生成随机RSA密钥函数 RSACmp 比较两个十六进制值是否相等 URLEncode URL编码 URLDecode URL解码 QPEncode Quoted-Printable QP编码 QPDecode Quoted-Printable QP解码 压缩解压函数: Zip 压缩文件 UnZip 解压文件 UnZipFile 解压单个文件 ZipInfo 测试一个文件是否在压缩文件
中
存在 ZipFileToStr 将压缩文件
中
的文件解压到变量 ZipAFile 将zip文件
中
的文件信息生成的
数组
CompressString 压缩一个字符串 DeCompressString 解压字符串 数据库: CursorToStr 将Cursor生成变量 ChangesToStr 将Cursor的变动情况生成变量 StrToCursor 将变量还原为Cursor AppendFromStr 将变量
中
的表追加到指定表
中
ACursorList 将变量
中
的表信息生成
数组
ACursorFields 将变量
中
的指定表的字段信息生成
数组
CRC32Record 计算一条记录的CRC32值 SQLCallBack SQL回调函数载入 SQLCallReset SQL回调函数卸载 PackMDB 压缩修复Access数据库 ReadMemo 读取
vfp
中
大于16M的备注字段 网络相关函数: DownFile 从internet上下载文件到本地 DownFileX 线程方式从网上下载一个文件 HttpGetFileSize 读取internet上的文件大小 HttpPostData 向http服务器Post数据 HttpOpen 打开一个Internet句柄 HttpAddParms 为Http句柄添加一个
参数
HttpSend 发送Http句柄
中
的Post数据 HttpClose 关闭Http句柄 FtpDownFile 从FTP服务器下载文件 FtpUploadFile 向FTP服务器上传文件 FtpConnect 连接FTP服务器 FtpDisconnect 断开FTP服务器连接 FtpAFile 枚举Ftp
中
的所有文件 FtpCreateDir 在FTP服务器上创建一个文件夹 FtpSetCurrentDir 设置当前的文件夹 FtpDeleteDir 删除FTP服务器上的文件夹 FtpDelFile 删除FTP服务器上的文件 FtpRename 重命名FTP服务器上的文件 FtpFOpen 打开FTP服务器上的文件 FtpFClose 关闭FTP服务器上的文件 FtpFRead 读取FTP服务器上的文件 FtpFWrite 写入FTP服务器上的文件 FtpSetPasv 设置FTP被动工作模式 ShareAdd 在局域网共享文件夹 ShareDel 删除共享文件夹的共享 ShareMapDrive 映射网络驱动器 ShareDelDrive 删除映射的网络驱动器 GetLocalIP 读取本机IP DomainToIP 转换域名为IP地址 DialUp 建立拨号连接 DialDown 断开拨号连接 GetSqlServer 列出所有网络上的SQL Server IpToMAC 根据IP得到MAC地址 邮件函数: SmtpCreate 创建一个SMTP发送邮件的句柄 SmtpNewMail 在内存
中
创建邮件内容,等待发送 SmtpSend 发送邮件 SmtpGetLastError 检测邮件最后的错误 Pop3Create 创建一个POP3接收邮件的句柄 Pop3Close 关闭句柄 Pop3AMailList 枚举POP3服务器上的邮件数量 Pop3DeleteMail 删除POP3邮件服务器上的邮件 Pop3GetMail 下载一封邮件 Pop3GetMailHeader 下载邮件头 Pop3DeleteMail 删除服务器上的邮件 打印相关函数: PaperAdd 添加自定义纸张并返回ID PaperDel 删除自定义纸张 PaperInfo 读取所有纸张信息或指定纸张信息 APaper 枚举所有纸张生成
数组
GetDefaultPrinter 取得默认打印机的名称 SetDefaultPrinter 设置默认打印机 PrinterOpen 启用一个打印任务 PrinterOutPage 打印页对像 PrinterClose 结束打印 常用转换函数: ToPY 生成指写字符串的拼音首字 NToC 数字转人民币大写 hzbh 计算指定字符串的汉字笔划 StringToDword 将高底位存放的字符串,转换为字符型 DwordToString 将整型数值转换为字符型数值 NumConver 进制转换函数,能够将一个数字转换为2至36进制的字符串 ConverNum 将指定进制的字符串转换为数值型 GB2312ToBIG5 简体转繁体 BIG5ToGB2312 繁体转简体 FormToBmp 将表单保存为BMP图片 RectToBmp 指定屏幕区域保存为bmp图片 StrReverse 指定屏幕区域保存为bmp图片 ImageConver 转换图片格式 FTrim 删除字符串
中
除指定字符以外的字符 Thumbnail 缩放图片 注册表读写函数: regRead 读取注册表
中
的设置 regWrite 向注册表
中
写入设置 regDelKey 删除注册表
中
的分支 regDelValue 删除注册表
中
的设置 ini文件读写函数: iniRead 从ini文件
中
读取设置 iniWrite 向ini文件
中
写入一个设置 iniSet 设置默认的数据段和ini文件 iniSetSection 设置默认的数据段 iniSetFileName 设置默认的ini文件 系统托盘 SysTrayAdd 向系统托盘添加一个图标 SysTrayEdit 修改系统托盘的图标 SysTrayDel 删除系统托盘
中
的图标 HotKeyAdd 向系统注册一个热键 HotKeyDel 删除向系统注册的热键 SysTrayShowMessage 显示托盘消息 文件操作 CopyFiles 复制文件 MoveFiles 移动文件 DeleteFiles 删除文件 CreateShortcut 创建快捷方式 GetIcon 释放exe或dll
中
的图标 其它: Set
VFP
Events 设置MYFLL内部函数回调功能 SetDateTime 设置Windows系统时间 ChangEres 更改屏幕的分辨率 idleLoad 开始加载空闲检测 idleSeconds 读取系统空闲时间 idleUnload 卸载空闲检测 KillApp 终止指定进程 KillAllApp 终止所有进程,但排除指定标题的进程 KillProcessByName 根据程序文件名杀死一个进程 FindAllFile 查找指定文件夹下的所有文件 IsNum 检测函数是否是数字 CheckProcess 检测主程序是否重复运行 ProcLoad 载入一个
VFP
函数,取得函数地址 ProcUnload 卸载函数 MemRead 读取指定地址的内存 MemWrite 写入指写内存 PushError 系统错误处理压栈 PopError 系统错误处理出栈 Format 格式化输出字符串(类C语言) CreateLink 创建文件关联 DesktopHide 隐藏桌面 SystemKeySet 禁用系统键 RegisterFile 注册文件名解除文件注册 封装过的Win32
API
函数: FindWindow 查找指定窗口的句柄 SendMessage 向指写窗口发送指定消息 PostMessage 将消息投递到指定句柄的消息队列 ShowWindow 显示指定窗口 ShowWindowAsync 显示指定窗口 SetWindowLong 设置窗口的扩展样式 SetLayeredWindowAttributes 设置窗口效果 SetForegroundWindow 激活指定窗口使这成为最前面的窗口 ShellExecute 调用系统关联,打开一个文件 ShellExecWait 调用一个程序,并等待执行结束 SuspendThread 暂停一个线程 ResumeThread 恢复一个线程 Beep 使电脑内喇叭发出beep声 ExitWindowsEx 退出Windows Sleep 程序挂起nMilliseconds毫秒 ExitProcess 终止当前进程 GetLastError 返回最后的错误号码 SetParent 设置窗口的父窗口 UpdateWindow 更新窗口
转 Windows
API
函数在
VFP
中
的运用
转 Windows
API
函数在
VFP
中
的运用 2010年07月23日 Windows
API
函数在
VFP
中
的运用
VFP
中
常用WIN32
API
函数调用
事例 我们在
VFP
编程时,为了弥补
VFP
本身功能的不足,常常会用到WIN32
API
函数 来对
VFP
的功能行扩展,例如取得系统信息、对注册表进行操作等,但是由于 WIN32
API
函数是C++的...
VFP
中
轻松绑定 Windows 事件
轻松绑定Windows事件 作者:DougHennig 译者:fbilo
VFP
所缺少的在其它开发环境
中
的一个功能是捕捉Windows事件的能力。
VFP
9扩展了BindEvent()函数的功能,现在,当Windows传递某些特定的消息给
VFP
窗口的时候,BindEvent()可以调用我们自己的代码。这个功能有着很广泛的用途,DougHennig在这里为我们...
VFP
编程技巧
作者:未知 文章来源:黑妖蛇乐园BLOG 点击数:2297 更新时间:2005-12-30 在
VFP
中
如何历遍所有文件夹和文件 在
VFP
中
,能象一些杀毒软件那样,找遍磁盘的所有文件夹和文件吗?答案是肯定的,而且很简单:*利用
VFP
的Create Cursor -SQL命令建立有5个字段的临时库 *结合前面提到的ADIR()函数便可完成。下面是具体代码:
用
VFP
发送带附件的电子邮件
用
VFP
发送带附件的电子邮件Doug Hennig 提供一个可用于从应用程序
中
发送 e-mail 的类. 它组合两个 M
API
ActiveX 控件到一个易于
使用
的类
中
.在今天,许多许多用户希望能在他们的应用程序
中
发送 e-mail. 例如, 典型的商业应用程序
中
的客户表单
中
可能有一字段用于保存客户的 e-mail 地址. 在这样的应用程序
中
,没有一种快速的、不需要切换到 Outlook Ex
VFP
2,727
社区成员
29,114
社区内容
发帖
与我相关
我的任务
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
分享
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章