如果我的机器有两个网卡, 一个IP是:10.12.0.50, 一个是192.168.0.20
用Winsock控件的 Winsock1.LocalIP 可以得到的只是其中之一, 如何获得另一个?
用Winsock控件的 Winsock1.LocalIP 可以得到的只是其中之一, 如何获得另一个?
解决方案 »
- 有什么办法可以让mshflexgrid读取数据库后,滚动条默认位置在最下端
- 怎样判断把日期是当年的数据提取出来?
- vb中的容器
- 请问怎样在Crystal Reports 8.5中实现金额大写,急用
- 如何清除在frame中动态创建的控件,怎么判断已经创建了控件
- mciSendString播放mid文件成功,但是在播放时候无反应!在线求救
- 关于FLASH控件右键菜单的问题!
- $$全国各地招网络兼职月薪3000$$
- vsflexgrid 删除数据时又遇怪问题!请高手赐教!
- How to access the table of Access system table in an application? For example: MSysObjects.
- rs.moveprevious错误
- 按钮中icon与caption之间的排列问题
Option Explicit' 侦测目前设备上所使用的 IP 地址' 设定在您的计算机上,最多可能使用 5 组 IP 地址,并且用来产生缓冲区
Private Const MAX_IP = 10Private Type IPINFO
dwAddr As Long ' IP 地址
dwNICIndex As Long ' NIC 界面索引
dwSubnetMask As Long ' 子网掩码
dwBroadCastAddr As Long ' 封包广播地址
dwReAssemblySize As Long ' 组译大小
unused1 As Integer ' 暂不使用
unused2 As Integer ' 暂不使用
End TypePrivate Type MIB_IPADDRTABLE
dwEntrys As Long ' 窗体中登录的数量
arIPInfo(MAX_IP) As IPINFO ' IP 地址登录数组
End TypePrivate Type IP_Array
mBuffer As MIB_IPADDRTABLE ' IP 地址清单数组
BufferLen As Long ' 缓冲区长度
End TypePrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long' 将长整数转换为字符串
Public Function ConvertAddr2Str(LongAddress As Long) As String
Dim addrByte(3) As Byte
Dim Cnt As Long
CopyMemory addrByte(0), LongAddress, 4
For Cnt = 0 To 3
ConvertAddr2Str = ConvertAddr2Str + CStr(addrByte(Cnt)) + "."
Next Cnt
ConvertAddr2Str = Left$(ConvertAddr2Str, Len(ConvertAddr2Str) - 1)
End FunctionPrivate Sub Form_Load()
Text1.Text = ""
Me.Caption = "取得计算机上所使用的 IP 地址"
Text1.Font.Size = 11
Start
End SubPrivate Sub Form_Resize()
Text1.Height = Me.Height - 38 * Screen.TwipsPerPixelY
Text1.Width = Me.Width - 20 * Screen.TwipsPerPixelX
End SubPrivate Sub Start()
Dim lRet As Long, I As Long
Dim Buffer() As Byte
Dim ListDatas As MIB_IPADDRTABLE Text1 = "" On Error GoTo Errors
GetIpAddrTable ByVal 0&, lRet, True If lRet <= 0 Then Exit Sub
ReDim Buffer(0 To lRet - 1) As Byte ' 取回 IP 地址的相关数据
GetIpAddrTable Buffer(0), lRet, False Debug.Print Buffer(0)
' 利用已经安装 IP 地址的前四个字节,来取得登录的信息
CopyMemory ListDatas.dwEntrys, Buffer(0), 4
Text1 = "在您的计算机上,共有 " & ListDatas.dwEntrys & " 组已经设定使用的 IP 地址" & vbCrLf
Text1 = Text1 & String(45, "=") & vbCrLf
For I = 0 To ListDatas.dwEntrys - 1 ' 将存在内存之中的地址结构,复制到清单之中
CopyMemory ListDatas.arIPInfo(I), Buffer(4 + (I * Len(ListDatas.arIPInfo(0)))), Len(ListDatas.arIPInfo(I))
Text1 = Text1 & "IP 地址 :" & ConvertAddr2Str(ListDatas.arIPInfo(I).dwAddr) & vbCrLf
Text1 = Text1 & "IP 子网掩码:" & ConvertAddr2Str(ListDatas.arIPInfo(I).dwSubnetMask) & vbCrLf
Text1 = Text1 & "IP 广播地址 :" & ConvertAddr2Str(ListDatas.arIPInfo(I).dwBroadCastAddr) & vbCrLf
Text1 = Text1 & String(45, "*") & vbCrLf & vbCrLf
NextExit SubErrors:End Sub