starl 发表于 2009-4-20 14:06:29

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

本帖最后由 starl 于 2009-4-23 09:52 编辑

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

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

我运行脚本的时候,弹出提示框为0,应该是表明dllcall函数的返回是正确的,但是提示说API函数的返回值$num错误!!!
不知道什么原因!!望达人帮忙解答下,谢谢!!!:face (35):

rho123 发表于 2009-4-20 16:01:56

$a = DllCall("winmm.dll","int","waveInGetNumDevs")

应该是这样吧 :face (19):

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

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

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

[ 本帖最后由 rho123 于 2009-4-20 16:05 编辑 ]

starl 发表于 2009-4-20 16:26:53

原帖由 rho123 于 2009-4-20 16:01 发表 http://www.autoitx.com/images/common/back.gif
$a = DllCall("winmm.dll","int","waveInGetNumDevs")

应该是这样吧 :face (19):

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

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

如果遇到 ...


谢谢rho123的解答,我去测试下先!
恩,是返回数组,返回2表明你的电脑里面有两个录音设备!
PS:这个$a是我们要调用的dll函数的返回结果,$a这个应该是作为dllcall这个函数操作成功与否的判断返回值吧!!!在有些时候测试需要用到,不知道理解的对不对!看文档的意思好像是这样!!!

starl 发表于 2009-4-20 16:29:16

原帖由 rho123 于 2009-4-20 16:01 发表 http://www.autoitx.com/images/common/back.gif
$a = DllCall("winmm.dll","int","waveInGetNumDevs")

应该是这样吧 :face (19):

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

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

如果遇到 ...
rho123,你好!
winmm.lib这个库文件是在msdn里面指定的,为什么要改成winmm.dll这个??是AU3规定的用法吗??好像文档没规定。。。:face (9):

starl 发表于 2009-4-20 17:02:57

...改成winmm.dll就测试到了录音设备的个数!!!谢谢rho123的回答!!

starl 发表于 2009-4-23 09:52:24

可以结贴了,谢谢大家的指导!!!
页: [1]
查看完整版本: 关于dllcall函数的使用错误原因的请教