专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VFP

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

发布时间:2010-05-24 22:04:08 文章来源:www.iduyao.cn 采编人员:星星草
如何用VB做一个ActiveX Dll 给VFP 调用
最近做个东西, 使用的dll 只有VB 的实例代码
其中有一个Function “GetEnrollData” 使用了 Variant* 变量。 VFp 代码出错, 类型不匹配。

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

所以只好用 VB 在做一个DLL 来解决。 
不用vb VB好多年了, 希望大家给予指点。
本身函数声明格式
[功能] 函数GetEnrollData从指定的终端机获取一条指定的登记数据.
[格式] BOOL GetEnrollData( 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的内容
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: