找回密码
 加入
搜索
查看: 1427|回复: 5

关于dllcall函数的使用错误原因的请教

[复制链接]
发表于 2009-4-20 14:06:29 | 显示全部楼层 |阅读模式
本帖最后由 starl 于 2009-4-23 09:52 编辑

$num = DllCall("winmm.lib","int","waveInGetNumDevs")
MsgBox(64,"",$num)
MsgBox(64,"",$num[0])

waveInGetNumDevs这个API函数的作用是得到当前系统中录音设备的个数,没有参数!!

我运行脚本的时候,弹出提示框为0,应该是表明dllcall函数的返回是正确的,但是提示说API函数的返回值$num[0]错误!!!
不知道什么原因!!望达人帮忙解答下,谢谢!!!
发表于 2009-4-20 16:01:56 | 显示全部楼层
$a = DllCall("winmm.dll","int","waveInGetNumDevs")

应该是这样吧

在我的印象中 DLLCALL 后返回的好像是数组吧。。

返回$a[0] 才是你想要的。我这里测试返回是 2   不知道啥意思

如果遇到迷糊的文件 建议你直接  看看 @error 的值 就很容易判断了

[ 本帖最后由 rho123 于 2009-4-20 16:05 编辑 ]
 楼主| 发表于 2009-4-20 16:26:53 | 显示全部楼层
原帖由 rho123 于 2009-4-20 16:01 发表
$a = DllCall("winmm.dll","int","waveInGetNumDevs")

应该是这样吧

在我的印象中 DLLCALL 后返回的好像是数组吧。。

返回$a[0] 才是你想要的。我这里测试返回是 2   不知道啥意思

如果遇到 ...



谢谢rho123的解答,我去测试下先!
恩,是返回数组,返回2表明你的电脑里面有两个录音设备!
PS:这个$a[0]是我们要调用的dll函数的返回结果,$a这个应该是作为dllcall这个函数操作成功与否的判断返回值吧!!!在有些时候测试需要用到,不知道理解的对不对!看文档的意思好像是这样!!!
 楼主| 发表于 2009-4-20 16:29:16 | 显示全部楼层
原帖由 rho123 于 2009-4-20 16:01 发表
$a = DllCall("winmm.dll","int","waveInGetNumDevs")

应该是这样吧

在我的印象中 DLLCALL 后返回的好像是数组吧。。

返回$a[0] 才是你想要的。我这里测试返回是 2   不知道啥意思

如果遇到 ...

rho123,你好!
winmm.lib这个库文件是在msdn里面指定的,为什么要改成winmm.dll这个??是AU3规定的用法吗??好像文档没规定。。。
 楼主| 发表于 2009-4-20 17:02:57 | 显示全部楼层
...改成winmm.dll就测试到了录音设备的个数!!!谢谢rho123的回答!!
 楼主| 发表于 2009-4-23 09:52:24 | 显示全部楼层
可以结贴了,谢谢大家的指导!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-28 06:12 , Processed in 0.074820 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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