找回密码
 加入
搜索
查看: 3989|回复: 2

[AU3基础] 关于函数GetIfTable的使用[已解决]

[复制链接]
发表于 2011-5-1 16:10:50 | 显示全部楼层 |阅读模式
本帖最后由 飘云 于 2011-5-1 17:46 编辑

在vb中只要
Private Type MIB_IFTABLE
    dwNumEntries As Long
    MIB_Table(9) As MIB_IFROW
End Type
这样就定义了MIB_IFTABLE数据结构,然后
Dim ifT As MIB_IFTABLE
LenIfT = Len(ifT)
RValue = GetIfTable(ifT, LenIfT, True)
之后,ifT.dwNumEntries就有结果了,在au3中该怎么写以便获取dwNumEntries的值呢?
试着写了下
$MIB_IFROW = DllStructCreate("wchar wszName[256];dword dwIndex;dword dwType;dword dwMtu;dword dwSpeed;dword dwPhysAddrLen;char bPhysAddr[8];dword dwAdminStatus;dword dwOperStatus;dword dwLastChange;dword dwInOctets;dword dwInUcastPkts;dword dwInNUcastPkts;dword dwInDiscards;dword dwInErrors;dword dwInUnknownProtos;dword dwOutOctets;dword dwOutUcastPkts;dword dwOutNUcastPkts;dword dwOutDiscards;dword dwOutErrors;dword dwOutQLen;dword dwDescrLen;char bDescr[256]")
$MIB_IFTABLE = DllStructCreate("dword;ptr")
DllStructSetData($MIB_IFTABLE,2,DllStructGetPtr($MIB_IFROW))
DllCall("iphlpapi.dll","dword","GetIfTable","ptr",DllStructGetPtr($MIB_IFTABLE),"dword",DllStructGetSize($MIB_IFTABLE),"BOOL",1)
MsgBox(0,"",DllStructGetData($MIB_IFTABLE,1))

但是以上代码一运行编译器就报错
发表于 2011-5-1 17:10:47 | 显示全部楼层
$size = DllCall("iphlpapi.dll", "dword", "GetIfTable", "ptr", 0, "ulong*", 0, "bool", 1)
$size = $size[2]
$tBuffer = DllStructCreate("ubyte[" & $size & "]")

$ret = DllCall("iphlpapi.dll", "dword", "GetIfTable", "ptr", DllStructGetPtr($tBuffer), "ulong*", DllStructGetSize($tBuffer), "bool", 1)
MsgBox(0,0,DllStructGetData(DllStructCreate("dword", DllStructGetPtr($tBuffer)), 1))
 楼主| 发表于 2011-5-1 17:37:50 | 显示全部楼层
回复 2# ceoguang


    不愧是版主,原来如此,原来是先调用获得返回值,然后再创建结构啊,汗
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-2 06:37 , Processed in 0.081437 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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