找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4126|回复: 0

【分享】马大哈系列功能模块----取得本机IP地址列表(VB6.0代码)

[复制链接]

275

主题

3019

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17066

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-4-25 11:56:36 | 显示全部楼层 |阅读模式
在CSDN的  这个帖子  里见到了此需求.

有时需要取得本机的IP地址列表,此时可以调用ipconfig.exe,但不方便;那就使用API:GetIpAddrTable来取得吧.

我写了一个封装,调用GetIPList()就能获得当前所有的IP地址列表,例子:
  1. Dim I as long,IPs() as string

  2. ips=GetIPList
  3. for i=0 to ubound(ips)
  4.     debug.print ips(i)
  5. next
复制代码
模块关键代码:
  1. Public Function GetIPList() As String()
  2.     '取得本机所有IP地址
  3.     '
  4.     '返回值:
  5.     '       字符串数组,包含本机所有的IP地址
  6.     '
  7.     Dim I As Long, lRet As Long, Buff() As Byte, lSize As Long, lPtr As Long, sTmp As String
  8.     Dim IPADT As MIB_IPADDRTABLE, WD As WSADATA, OutBuff() As String
  9.    
  10.     On Error GoTo Err
  11.    
  12.     ReDim Buff(0)                                               '只分配1字节
  13.     lRet = GetIpAddrTable(VarPtr(Buff(0)), lSize, True)         '首次调用,缓冲区肯定不足
  14.     If lRet = ERROR_INSUFFICIENT_BUFFER Then
  15.         ReDim Buff(lSize - 1)                                   '这里已经得到了所需要的缓冲区大小
  16.         lRet = GetIpAddrTable(VarPtr(Buff(0)), lSize, True)     '再次调用
  17.     End If
  18.     If lRet = NO_ERROR Then
  19.         Call CopyMemory(VarPtr(IPADT.dEntrys), VarPtr(Buff(0)), UBound(Buff) + 1)       '复制到结构中
  20.         If WSAStartup(&H101, WD) = 0 Then
  21.             ReDim OutBuff(IPADT.dEntrys - 1)                    '.dEntrys中是IP地址数量
  22.             For I = 0 To IPADT.dEntrys - 1
  23.                 lPtr = inet_ntoa(IPADT.mIPInfo(I).dwAddr)       '转换IP地址LONG值,得到指向X.X.X.X格式IP地址字符串的指针
  24.                 sTmp = Space(lstrlen(lPtr))                     '分配缓冲区
  25.                 Call CopyMemory(StrPtr(sTmp), lPtr, Len(sTmp))  '复制字符串
  26.                 OutBuff(I) = Trim(Replace(StrConv(sTmp, vbUnicode), Chr(0), Chr(32)))       '去掉NULL并保存结果
  27.                
  28.                 Debug.Print "IP = " & OutBuff(I)
  29.             Next
  30.         End If
  31.     End If
  32.     GetIPList = OutBuff
  33. Err:
  34.     Call WSACleanup
  35. End Function
复制代码
下载地址:

点击下载
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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