haijie1223 发表于 2014-3-22 19:34:00

[已解决]UDF中API返回值

本帖最后由 haijie1223 于 2014-3-23 19:15 编辑

3.3.9.4中UDF中的这个API写的还真是蛋疼~干嘛不直接返回数组?其他版本也如此吗?
#include <WinAPIEx.au3>
#include <Array.AU3>
Dim $VerInfo = _WinAPI_GetVersionEx()
Dim $INFOEX
For $i = 1 To 10
      $INFOEX[$i] = DllStructGetData($VerInfo, $i)
Next
_ArrayDisplay($INFOEX)

半芯竹 发表于 2014-3-22 20:59:03

我不解,为什么我这总是报 _ArrayDisplay 未定义。搜索WinAPIEx.au3这个文件也是有的。所以暂时未能向LZ提供有用的数据

haijie1223 发表于 2014-3-22 21:01:19

回复 2# 半芯竹


    汗~代码改了~再试试吧

半芯竹 发表于 2014-3-22 21:05:48

回复 3# haijie1223


我的系统信息就不用说了,您看返回的咱样。

半芯竹 发表于 2014-3-22 21:12:35

回复 3# haijie1223


    您的意思是干嘛不直接返回数组
Dim $VerInfo = _WinAPI_GetVersionEx()
这个是吧? 然后想直接 _ArrayDisplay($VerInfo)
我这不行。呵呵。

afan 发表于 2014-3-22 21:42:46

查看 3.3.6.1 ~ 3.3.10.2 是一样的,返回的是结构。可能这是此类API既定的套路吧~~

haijie1223 发表于 2014-3-22 22:07:40

回复 6# afan


    返回结构还得去查结构中的元素,既然都做成udf了,直接返回数组多好~想不通,回头问问P侠~

Ycxw2008 发表于 2014-3-22 22:18:24

结构体 不好吗?
我总在想 为什么有些UDF总是要把结构体转成数组呢 :(
{:face (394):}

afan 发表于 2014-3-22 22:50:25

这就是答案了…… 各有需求

Ycxw2008 发表于 2014-3-22 23:06:06

本帖最后由 Ycxw2008 于 2014-3-22 23:15 编辑

应该加个选项 囧
不过话说回来了,UDF 自己改下也可以啊.囧
为了看数据 那不如直接_WinAPI_DisplayStruct

haijie1223 发表于 2014-3-22 23:18:51

回复 10# Ycxw2008


    囧

Ycxw2008 发表于 2014-3-22 23:21:42

回复 11# haijie1223


    au3上面结构体    拷贝数据到另一个变量上面不方便
    au3上面数组嘛    取不到地址,感觉很更是不方便

    只是个人意见哈。
{:face (361):}

haijie1223 发表于 2014-3-22 23:46:43

回复 9# afan


    问过P侠,他的回复如下:二次调用api时,可以直接使用此结构的指针。
如果返回数组,那么二次调用时,先得将数组转为结构,然后再获取结构的指针,这样做很麻烦,因为api不认识数组。
果然很有说服力!

绿色风 发表于 2014-3-23 07:50:18

回复 13# haijie1223


    还是模糊中....还没用到这些。。。。不理解实际使用情况....
页: [1]
查看完整版本: [已解决]UDF中API返回值