是否是使用API函数,用哪个???

解决方案 »

  1.   

    可使用WinSock控件(组件中选取Microsoft WinSock Control 6.0)的
    IP:    Winsock1.LocalIP
    计算机名: Winsock1.LocalHostName用API:
    获取计算机名:   GetComputerName
    IP:            gethostbyname, CopyMemoryIP结合计算机名配合使用
      

  2.   

    用winsock控件,我知道如何操作,但本机的地址都是127.0.0.1,如果要获得自己设置的IP地址呢》如:192.168.0.1呢?另外,用API该如何写 呀。楼上的大哥,可否给点代码?
      

  3.   

    Private Const MAX_IP = 255
        Private Type IPINFO
         dwAddr As Long
         dwIndex As Long
         dwMask As Long
         dwBCastAddr As Long
         dwReasmSize As Long
         unused1 As Integer
         unused2 As Integer
        End Type
        Private Type MIB_IPADDRTABLE
         dEntrys As Long
         mIPInfo(MAX_IP) As IPINFO
        End Type
        Private Type IP_Array
         mBuffer As MIB_IPADDRTABLE
         BufferLen As Long
        End Type
        Private 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
        Dim strIP As String
        Private Function ConvertAddressToString(longAddr As Long) As String
         Dim myByte(3) As Byte
         Dim Cnt As Long
         CopyMemory myByte(0), longAddr, 4
         For Cnt = 0 To 3
         ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "."
         Next Cnt
         ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
        End Function
         
        Public Sub Start()
         Dim Ret As Long, Tel As Long
         Dim bBytes() As Byte
         Dim Listing As MIB_IPADDRTABLE
         On Error GoTo END1
         GetIpAddrTable ByVal 0&, Ret, True
         If Ret <= 0 Then Exit Sub
         ReDim bBytes(0 To Ret - 1) As Byte
         GetIpAddrTable bBytes(0), Ret, False
         CopyMemory Listing.dEntrys, bBytes(0), 4
         strIP = "你机子上有 " & Listing.dEntrys & " 个 IP 地址。" & vbCrLf
         strIP = strIP & "------------------------------------------------" & vbCrLf & vbCrLf
         For Tel = 0 To Listing.dEntrys - 1
         CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel))
         strIP = strIP & "IP 地址 : " & ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) & vbCrLf
         Next
         Exit Sub
    END1:
         MsgBox "ERROR"
        End Sub
    Private Sub Form_Load()
         Start
         MsgBox strIP
    End Sub‘******************************************
    Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
    Private Sub Form_Load()
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        Dim strString As String
        'Create a buffer
        strString = String(255, Chr$(0))
        'Get the computer name
        GetComputerName strString, 255
        'remove the unnecessary chr$(0)'s
        strString = Left$(strString, InStr(1, strString, Chr$(0)))
        'Show the computer name
        MsgBox strString
    End Sub
    楼主要知道搜索。这些都有很多人问过了。最好去下个API浏览器看看。
      

  4.   

    用VB动态获取所有网络邻居的名称及其IP地址:
    http://www.lihuasoft.net/article/show.php?id=731
      

  5.   

    用winsock就可以了,用不著api那麼麻煩,我最反感vb調用api,搞得不倫不類的
    winsock有個屬性 LocalIP 属性,即可返回本機ip了