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

[AU3基础] 旧版能用dllcall新版却不行

[复制链接]
发表于 2010-4-22 20:53:16 | 显示全部楼层 |阅读模式
同一样一个dll,同样调用方式

$result= DllCall($dll, "long", "GetBIP","string","");每秒都抓包取出疑似IP
MsgBox(0,0,@error)

autoit3(au3)汉化版3.3.0.0.1 调用正常。 没有错误

而 .3.3.5.X 及以上的版本就不正常。。附上DLL请各位帮助测试一下,谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2010-4-22 21:14:06 | 显示全部楼层
打到原因了。
终于搞明白了。

$result= DllCall("au3.dll", "long", "GetBIP","string","");
改为
$result= DllCall("au3.dll", "long", "GetBIP","str","");
即可。刚才我仔细翻了一下AU3的文档发现有long这个数据类型,却没有string这个数据类型,而只有
str ANSI 字符串(不能超过 65536 个字符).  这个数据类型

并且 AU3的 STR 相当于WINAPI 的 LPCSTR/LPSTR  ,我想这里AU3的str也相当于VB的 string


但不明白 是,为什么旧版本却string可以。
发表于 2010-4-25 00:26:46 | 显示全部楼层
3.3.2.0调整过参数类型,与MSDN上的定义更接近。
另外有些类型定义也有改变,比如byte以前定义为8位整型,现在是无符号8位整型。
发表于 2010-4-25 07:30:32 | 显示全部楼层
原来如此,谢谢了,我也学到了
 楼主| 发表于 2010-4-26 12:04:37 | 显示全部楼层
回复 3# sensel


    与MSDN上的定义更接近 的话,那应该是string有效才对啊?而不str.
感谢回答。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-24 02:40 , Processed in 0.077312 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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