首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

怎么用VB做一个ActiveX Dll 给VFP 调用

2012-03-18 
如何用VB做一个ActiveX Dll 给VFP 调用最近做个东西,使用的dll只有VB 的实例代码其中有一个Function “GetE

如何用VB做一个ActiveX Dll 给VFP 调用
最近做个东西, 使用的dll 只有VB 的实例代码
其中有一个Function “GetEnrollData” 使用了 Variant* 变量。 VFp 代码出错, 类型不匹配。

微软的说法是 设计上的问题 先天性问题。(参见微软的说法http://support.microsoft.com/kb/177575/zh-cn)

所以只好用 VB 在做一个DLL 来解决。 
不用vb VB好多年了, 希望大家给予指点。
本身函数声明格式
[功能] 函数GetEnrollData从指定的终端机获取一条指定的登记数据.
[格式] BOOLGetEnrollData(Long dwMachineNumber ,
Long dwEnrollNumber ,
Long dwBackupNumber ,
Long FAR* dwMachinePrivilege ,
Long FAR* dwEnrollData ,
Long FAR* dwPassWord );


[解决办法]
直接在 VFP 中调用这个 DLL(即不用 VB 再做 DLL),将 Variant* 声明为字符型,然后再做相应转换。
[解决办法]
你的格式和功能说明均有6个参数,而VB示例却有7个参数,哪个错了?
[解决办法]
应该是7个参数,
long dwMachineNumber , 
long dwEnrollNumber , 
long dwEMachineNumber , 
long dwBackupNumber , 
long FAR* dwMachinePrivilege , 
long FAR* dwEnrollData , 
long FAR* dwPassWord
[解决办法]
在 vfp 中试试:

vMachineNumber=1
vEnrollNumber=12345678
vEMachineNumber=1
vBackupNumber=0
vMP=Replicate(Chr(0),255)
vEnrollData=Replicate(Chr(0),1828)
vPSW=Replicate(Chr(0),255)
If Thisform.FPKEEPER1.GetEnrollData(vMachineNumber,vEnrollNumber,vEMachineNumber,vBackupNumber,@vMP,@vEnrollData,@vPSW)&& FPKEEPER1为OCX的Name
Messagebox('MachinePrivilege='+vMP)
Messagebox('EnrollData='+vEnrollData)
Messagebox('PassWord='+vPSW)
Endif

你方便的话帖一下上面Messagebox的内容

热点排行