ネットワークインターフェース一覧の取得 <TOP>
ネットワークインターフェース一覧を取得します。
CopyMemory メモリブロックの移動
GetIpAddrTable ネットワークインターフェース一覧の取得(Windows98以降)
'================================================================ '= ネットワークインターフェース一覧の取得 '= (GetIpAddrTable.bas) '================================================================ #include "Windows.bi" #define MAX_IP 4 'とりあえず5個以内のIPアドレスを想定 Type IPINFO dwAddr As Long 'IP アドレス dwIndex As Long 'インタフェースインデックス dwMask As Long 'IPアドレスのうちネットワークアドレスとホストアドレスを識別するための数値 dwBCastAddr As Long 'ネットワーク内のすべての端末にデータを送信するために使われる特殊なアドレス dwReasmSize As Long 'アセンブリサイズ unused1 As Integer '未使用 unused2 As Integer '未使用 End Type Type MIB_IPADDRTABLE dEntrys As Long 'エントリ数 mIPInfo(MAX_IP) As IPINFO 'IPアドレスエントリーの配列 End Type Type IP_Array mBuffer As MIB_IPADDRTABLE BufferLen As Long End Type ' ある位置から別の位置にメモリブロックを移動する関数の宣言 Declare Sub CopyMemory Lib "Kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length&) ' ネットワークインターフェース一覧の取得 Declare Function Api_GetIpAddrTable& Lib "Iphlpapi" Alias "GetIpAddrTable" (pIPAdrTable As Byte, pdwSize&, ByVal Sort&) Var Shared List1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 12 '================================================================ '= '================================================================ Declare Function ConvertAddressToString(longAddr As Long) As String Function ConvertAddressToString(longAddr As Long) As String Var myByte(3) As Byte Var Str As String Var Cnt As Long CopyMemory myByte(0), longAddr, 4 For Cnt = 0 To 3 Str = Str & Right$(" " + Str$(myByte(Cnt)), 3) & "." Next Cnt Str = Left$(Str, Len(Str) - 1) ConvertAddressToString = Str End Function '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var ip As Long Var mi As MIB_IPADDRTABLE Var Ret As Long Ret = Api_GetIpAddrTable(ByVal 0, Ret, True) If Ret <= 0 Then Exit Sub Var bBytes(Ret - 1) As Byte Ret = Api_GetIpAddrTable(bBytes(0), Ret, False) CopyMemory mi.dEntrys, bBytes(0), 4 List1.Resetcontent List1.AddString Str$(mi.dEntrys) & " IP Address が見つかりました!" List1.AddString "-------------------------------------------" For ip = 0 To mi.dEntrys - 1 CopyMemory mi.mIPInfo(ip), bBytes(4 + (ip * Len(mi.mIPInfo(0)))), Len(mi.mIPInfo(ip)) List1.AddString "IP Address : " & ConvertAddressToString(mi.mIPInfo(ip).dwAddr) List1.AddString "IP Subnetmask : " & ConvertAddressToString(mi.mIPInfo(ip).dwMask) List1.AddString "BroadCast IP Address : " & ConvertAddressToString(mi.mIPInfo(ip).dwBCastAddr) List1.AddString "-------------------------------------------" Next End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End