找回密码
 加入
搜索
查看: 1193|回复: 4

函数带指针参数,在au3里如何调用呢?

[复制链接]
发表于 2009-10-20 19:10:41 | 显示全部楼层 |阅读模式
本帖最后由 小菜.net 于 2009-10-22 16:32 编辑

一个BC++写的DLL,其中某个函数的声明如下:
DLL int WINAPI JBC7K2_SetTime(char *ip, int port);
在au3中调用此函数成功,但是,不是我想要的结果。

问题就是出在这个char *ip这里,如何才能保证这个参数正确呢?
发表于 2009-10-21 22:36:35 | 显示全部楼层
$tIp = DllStructCreate("char Ip") ;创建一个结构体
$pIp = DllStructGetPtr($tIp)        ;取结构体的指针,因为该结构只有一个char类型成员,
                                  ;所以结构的指针就是Char成员的指针。
 楼主| 发表于 2009-10-22 00:35:02 | 显示全部楼层
$dll = DllOpen("xxx.dll") ;打开dll文件

$ip=DllStructCreate("char ip;") 
DllStructSetData($ip ,"ip","192.168.0.136")

DllCall($dll, "int", "JBC7K2_SetTime", "ptr",DllStructGetPtr( $ip,"ip"), "int", "5102") ;我原来的代码
DllCall($dll, "int", "JBC7K2_SetTime", "ptr",DllStructGetPtr( $ip), "int", "5102") ;按照楼上的修改

;................
上面两种方法都不行,返回结果一样。
发表于 2009-10-22 07:00:05 | 显示全部楼层
发参数上来看看,
发表于 2009-10-22 11:05:00 | 显示全部楼层
根据官方帮助手册改的,测试没问题
$ip=DllStructCreate("char ip[16]")
DllStructSetData($ip ,"ip","192.168.0.136")

MsgBox(0,"DllStruct","Struct Size: " & DllStructGetSize($ip) & @CRLF & _
        "Struct pointer: " & DllStructGetPtr($ip) & @CRLF & _
        "Data:" & @CRLF & _
        DllStructGetData($ip,'ip') & @CRLF)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 18:19 , Processed in 0.075064 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表