Option ExplicitPublic Const ERROR_SUCCESS As Long = 0
Public Const MAX_DOMAIN_NAME_LEN As Long = 128
Public Const MAX_HOSTNAME_LEN As Long = 128
Public Const MAX_SCOPE_ID_LEN As Long = 256
Public Type IP_ADDRESS_STRING
     IpAddr(0 To 15) As Byte
End Type
Public Type IP_MASK_STRING
     IpMask(0 To 15) As Byte
End Type
Public Type IP_ADDR_STRING
     dwNext As Long
     IpAddress As IP_ADDRESS_STRING
     IpMask As IP_MASK_STRING
     dwContext As Long
End TypePublic Type FIXED_INFO
     HostName(0 To (MAX_HOSTNAME_LEN + 3)) As Byte
     DomainName(0 To (MAX_DOMAIN_NAME_LEN + 3)) As Byte
     CurrentDnsServer As IP_ADDR_STRING
     NodeType As Long
     ScopeId(0 To (MAX_SCOPE_ID_LEN + 3))
     EnableRouting As Long
     EnableProxy As Long
     EnableDns As Long
End Type
Public Declare Function GetNetworkParams Lib "iphlpapi.dll" _
(pFixedInfo As Any, pOutBufLen As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal Length As Long)
上面是模块的Dim buff() As Byte
Dim cbRequired As Long
Dim nStructSize As Long
Dim Info As FIXED_INFO
Public Function GetHostName()
If cbRequired > 0 Then
 
   If GetNetworkParams(buff(0), cbRequired) = ERROR_SUCCESS Then
      CopyMemory Info, ByVal VarPtr(buff(0)), LenB(Info)
      GetHostName = TrimNULL(StrConv(Info.HostName, vbUnicode))
     
   End If
End If
End Function
Public Function GetDomainName()
If cbRequired > 0 Then
 
   If GetNetworkParams(buff(0), cbRequired) = ERROR_SUCCESS Then
      CopyMemory Info, ByVal VarPtr(buff(0)), LenB(Info)
      GetDomainName = TrimNULL(StrConv(Info.DomainName, vbUnicode))
   End If
End If
End Function
Function TrimNULL(item As String)
Dim pos As Integer
pos = InStr(item, Chr$(0))
If pos Then
TrimNULL = Left$(item, pos - 1)
Else
TrimNULL = item
End If
End FunctionPrivate Sub Class_Initialize()Call GetNetworkParams(ByVal 0&, cbRequired)
ReDim buff(0 To cbRequired - 1) As Byte
End Sub
上面是类模块Private Sub Command1_Click()
Set ttt = New Class1
nnn = ttt.GetHostName
Text1.Text = nnn
End Sub
Private Sub Command2_Click()
Set ttt = New Class1
nnn = ttt.GetDomainName
Text2.Text = nnn
End Sub
调用,取得机器名,顺便赙赠你个取得域名的

解决方案 »

  1.   

    刚才我把你的代码加到了vb6的一模块中,怎么一运行就有错误啊!
    你把你这个类在vb6用的模块给我拷过来吧.
      

  2.   

    Option ExplicitPublic Const ERROR_SUCCESS As Long = 0
    Public Const MAX_DOMAIN_NAME_LEN As Long = 128
    Public Const MAX_HOSTNAME_LEN As Long = 128
    Public Const MAX_SCOPE_ID_LEN As Long = 256
    Public Type IP_ADDRESS_STRING
         IpAddr(0 To 15) As Byte
    End Type
    Public Type IP_MASK_STRING
         IpMask(0 To 15) As Byte
    End Type
    Public Type IP_ADDR_STRING
         dwNext As Long
         IpAddress As IP_ADDRESS_STRING
         IpMask As IP_MASK_STRING
         dwContext As Long
    End TypePublic Type FIXED_INFO
         HostName(0 To (MAX_HOSTNAME_LEN + 3)) As Byte
         DomainName(0 To (MAX_DOMAIN_NAME_LEN + 3)) As Byte
         CurrentDnsServer As IP_ADDR_STRING
         NodeType As Long
         ScopeId(0 To (MAX_SCOPE_ID_LEN + 3))
         EnableRouting As Long
         EnableProxy As Long
         EnableDns As Long
    End Type
    Public Declare Function GetNetworkParams Lib "iphlpapi.dll" _
    (pFixedInfo As Any, pOutBufLen As Long) As Long
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As Any, Source As Any, ByVal Length As Long)
    上面是模块的,我回答的帖的时候可以马马乎乎的,你问的人怎么能不认真看呢??这个才是模块内容啊
      

  3.   

    Dim buff() As Byte
    Dim cbRequired As Long
    Dim nStructSize As Long
    Dim Info As FIXED_INFO
    Public Function GetHostName()
    If cbRequired > 0 Then
     
       If GetNetworkParams(buff(0), cbRequired) = ERROR_SUCCESS Then
          CopyMemory Info, ByVal VarPtr(buff(0)), LenB(Info)
          GetHostName = TrimNULL(StrConv(Info.HostName, vbUnicode))
         
       End If
    End If
    End Function
    Public Function GetDomainName()
    If cbRequired > 0 Then
     
       If GetNetworkParams(buff(0), cbRequired) = ERROR_SUCCESS Then
          CopyMemory Info, ByVal VarPtr(buff(0)), LenB(Info)
          GetDomainName = TrimNULL(StrConv(Info.DomainName, vbUnicode))
       End If
    End If
    End Function
    Function TrimNULL(item As String)
    Dim pos As Integer
    pos = InStr(item, Chr$(0))
    If pos Then
    TrimNULL = Left$(item, pos - 1)
    Else
    TrimNULL = item
    End If
    End FunctionPrivate Sub Class_Initialize()Call GetNetworkParams(ByVal 0&, cbRequired)
    ReDim buff(0 To cbRequired - 1) As Byte
    End Sub
    上面是类模块,这个 是类模块,不一样的啊,要看仔细的,调用的时候还要看好了呢