热情软件屋

 

如何用VB找到计算机名


编号:QA004670
建立日期: 2003年1月4日 最后修改日期:2003年1月5日
所属类别:

suyingren:
    如何用VB找到“计算机的标识(网上邻居/属性/标识 中的计算机名)”并把它写入文本框中?
    

回答:

    下面是一个例子:
     Private Const WS_VERSION_REQD = &H101
     Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&
     Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
     Private Const MIN_SOCKETS_REQD = 1
     Private Const SOCKET_ERROR = -1
     Private Const WSADescription_Len = 256
     Private Const WSASYS_Status_Len = 128
    
     Private Type HOSTENT
     hName As Long
     hAliases As Long
     hAddrType As Integer
     hLength As Integer
     hAddrList As Long
     End Type
    
     Private Type WSADATA
     wversion As Integer
     wHighVersion As Integer
     szDescription(0 To WSADescription_Len) As Byte
     szSystemStatus(0 To WSASYS_Status_Len) As Byte
     iMaxSockets As Integer
     iMaxUdpDg As Integer
     lpszVendorInfo As Long
     End Type
    
     Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
     Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal _
     wVersionRequired as Integer, lpWSAData As WSADATA) As Long
     Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
    
     Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal hostname$,_
     ByVal HostLen as Long) as long
     Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal _
     hostname$) As Long
     Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal_
     hpvSource&, ByVal cbCopy&)
    
     Function hibyte(ByVal wParam As Integer)
    
     hibyte = wParam \ &H100 And &HFF&
    
     End Function
    
     Function lobyte(ByVal wParam As Integer)
    
     lobyte = wParam And &HFF&
    
     End Function
    
     Sub SocketsInitialize()
     Dim WSAD As WSADATA
     Dim iReturn As Integer
     Dim sLowByte As String, sHighByte As String, sMsg As String
    
     iReturn = WSAStartup(WS_VERSION_REQD, WSAD)
    
     If iReturn <> 0 Then
     MsgBox "Winsock.dll is not responding."
     End
     End If
    
     If lobyte(WSAD.wversion) <WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = _
     WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then
    
     sHighByte = Trim$(Str$(hibyte(WSAD.wversion)))
     sLowByte = Trim$(Str$(lobyte(WSAD.wversion)))
     sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte
     sMsg = sMsg & " is not supported by winsock.dll "
     MsgBox sMsg
     End
     End If
    
     'iMaxSockets is not used in winsock 2. So the following check is only
     'necessary for winsock 1. If winsock 2 is requested,
     'the following check can be skipped.
    
     If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then
     sMsg = "This application requires a minimum of "
     sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets."
     MsgBox sMsg
     End
     End If
    
     End Sub
    
     Sub SocketsCleanup()
     Dim lReturn As Long
    
     lReturn = WSACleanup()
    
     If lReturn <> 0 Then
     MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in Cleanup "
     End
     End If
    
     End Sub
    
     Sub Form_Load()
    
     SocketsInitialize
    
     End Sub
    
     Private Sub Form_Unload(Cancel As Integer)
    
     SocketsCleanup
    
     End Sub
    
     Private Sub Command1_click()
     Dim hostname As String * 256
     Dim hostent_addr As Long
     Dim host As HOSTENT
     Dim hostip_addr As Long
     Dim temp_ip_address() As Byte
     Dim i As Integer
     Dim ip_address As String
    
     If gethostname(hostname, 256) = SOCKET_ERROR Then
     MsgBox "Windows Sockets error " & Str(WSAGetLastError())
     Exit Sub
     Else
     hostname = Trim$(hostname)
     End If
    
     MsgBox hostname
    
     End Sub
    

    
    qg的意见:
    还可以用winsock控件的LocalHostName属性。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio