旧版能用dllcall新版却不行
同一样一个dll,同样调用方式$result= DllCall($dll, "long", "GetBIP","string","");每秒都抓包取出疑似IP
MsgBox(0,0,@error)
autoit3(au3)汉化版3.3.0.0.1 调用正常。 没有错误
而 .3.3.5.X 及以上的版本就不正常。。附上DLL请各位帮助测试一下,谢谢。
打到原因了。
终于搞明白了。
将
$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可以。 3.3.2.0调整过参数类型,与MSDN上的定义更接近。
另外有些类型定义也有改变,比如byte以前定义为8位整型,现在是无符号8位整型。 原来如此,谢谢了,我也学到了 回复 3# sensel
与MSDN上的定义更接近 的话,那应该是string有效才对啊?而不str.
感谢回答。
页:
[1]