怎么声明LPSTR的dll
vb吧
全部回复
仅看楼主
level 7
tzchf 楼主
Private Declare Function WebApply Lib "IWebApply.dll" () As String
对吗?
2020年06月03日 03点06分 1
level 8
byval long
2020年06月03日 05点06分 2
level 8
这么说吧,传long肯定是可以的,但是这个地址指向的字符串可能需要自己去获取
传string试试
2020年06月03日 05点06分 3
level 15
我之前看的资料都是说参数类型应该用什么,还真没有提到过返回值类型的问题
2020年06月03日 05点06分 4
进出都是LPSTR。没有官方的示例代码,瞎了
2020年06月03日 06点06分
@tzchf lpstr类型的参数,难道不是正好对应string类型吗!VB6有点奇葩:它“自己的”string类型是unicode格式,在api参数上却是ANSI格式。何况,VB6的文本数据,只有string类型;至于是否正确,你自己测试一下不就知道结果了?你“等别人”的这些时间,都可以做N多次试验了。
2020年06月03日 11点06分
如果“万一”这个API函数的入口参数和返回数据都是unicode格式,那么把API的入口参数声明为byval xx as long (调用时用 strptr(xxx)传入),返回数据声明为 byte数组就行了。这样返回值(文本的unicode编码数据)可直接赋值给VB6的String类型变量,并且该变量接收数据后,就是正常的文本内容。
2020年06月03日 11点06分
@涐吢铱舊囿儚 大致就用string,但愿可以,阿门。得要医保专线,那成本大了。我只能写好,让用户自己去搞了。
2020年06月03日 13点06分
level 1
请问这个医保做完了嘛,能请教一下嘛
2021年08月18日 11点08分 5
自费部分另一个软件,只是传进销存数据给医保,报销部分让用户用官方推荐的软件(天天新政策,不得安宁,还好没接招)
2021年08月20日 01点08分
level 10
LPSTR是windowsSDK中定义的ansi字符串指针,也就是传统的char*。
在vb6中以declare声明的外部函数中如果出现了char*以及char*的各种派生类型,参数中出现可以直接在declare声明中写成string,但是需要注意一个问题,形参声明明需要写byval,实参直接传递参数即可,不要搞什么strptr或者varptr。参数如果是输入参数可以直接传string变量,参数如果是输出参数就需要提前分配缓冲区空间,这个LPSTR和api函数GetWindowText和SetWindowText一样的类型,想一想这个api怎么用的就行了。
但是需要注意:返回值出现LPSTR就只能定义为long然后手动去取内容,这个超出了vb运行库的转换范围。
Declare Function WebApply Lib "IWebApply.dll" (byval xxx as string,byval xxx as string) As long
2021年09月04日 12点09分 6
level 11
说个题外话,我总觉得,楼主的头像就是“言字旁(讠)”去掉了一点。是不是呢
2021年09月06日 00点09分 7
不是。左耳旁,截自赵孟頫千字文
2021年09月09日 00点09分
1