⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modulenametoip.bas

📁 VB远程操作Sql Server 2000数据库的工具 主要功能就是远程(局域网)操作Sql Server数据库。 包括: 搜索并列举局域网内的所有Sql Server服务器 搜索并列举Sql
💻 BAS
字号:
Attribute VB_Name = "ModuleNameToIP"


Option Explicit

Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
Public Const SOCKET_ERROR As Long = -1
Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128
Public Const ERROR_SUCCESS       As Long = 0
Public Const WS_VERSIon_REQD     As Long = &H101
Public Const MIN_SOCKETS_REQD    As Long = 1
Public Const WS_VERSIon_MAJOR    As Long = WS_VERSIon_REQD \ &H100 And &HFF&
Public Const WS_VERSIon_MINOR    As Long = WS_VERSIon_REQD And &HFF&
Public Type HOSTENT
    hName      As Long
    hAliases   As Long
    hAddrType  As Integer
    hLen       As Integer
    hAddrList  As Long
End Type
Public Type WSADATA
    wVersion      As Integer
    wHighVersion  As Integer
    szDescription(0 To MAX_WSADescription)   As Byte
    szSystemStatus(0 To MAX_WSASYSStatus)    As Byte
    wMaxSockets   As Integer
    wMaxUDPDG     As Integer
    dwVendorInfo  As Long
End Type
Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Public Declare Function NetMessageBufferSend Lib "NETAPI32.DLL" (Server As Any, yToname As Byte, yFromName As Any, yMsg As Byte, ByVal lSize As Long) As Long

'调用的时候直接Msgbox GetIPAddress("机器名")即可,如机器名为空,则显示本机IP
Public Function GetIPAddress(Optional sHost As String) As String
    Dim sHostName   As String * 256
    Dim lpHost      As Long
    Dim HOST        As HOSTENT
    Dim dwIPAddr    As Long
    Dim tmpIPAddr() As Byte
    Dim I           As Integer
    Dim sIPAddr     As String
    Dim werr        As Long
    If Not SocketsInitialize() Then
        GetIPAddress = ""
        Exit Function
    End If
    If sHost = "" Then
        If gethostname(sHostName, 256) = SOCKET_ERROR Then
            werr = WSAGetLastError()
            GetIPAddress = ""
            SocketsCleanup
            Exit Function
        End If
        sHostName = VBA.Trim$(sHostName)
    Else
        sHostName = VBA.Trim$(sHost) & VBA.Chr$(0)
    End If
    lpHost = gethostbyname(sHostName)
    If lpHost = 0 Then
        werr = WSAGetLastError()
        GetIPAddress = ""
        SocketsCleanup
        Exit Function
    End If
    CopyMemory HOST, lpHost, Len(HOST)
    CopyMemory dwIPAddr, HOST.hAddrList, 4
    ReDim tmpIPAddr(1 To HOST.hLen)
    CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen
    For I = 1 To HOST.hLen
        sIPAddr = sIPAddr & tmpIPAddr(I) & "."
    Next
    GetIPAddress = VBA.Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
    SocketsCleanup
End Function

Public Function SocketsInitialize(Optional sErr As String) As Boolean
    Dim WSAD As WSADATA, sLoByte As String, sHiByte As String
    If WSAStartup(WS_VERSIon_REQD, WSAD) <> ERROR_SUCCESS Then
        sErr = "The 32-bit Windows Socket is not responding."
        SocketsInitialize = False
        Exit Function
    End If
    If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
        sErr = "This application requires a minimum of " & _
                CStr(MIN_SOCKETS_REQD) & " supported sockets."

        SocketsInitialize = False
        Exit Function
    End If
    If LoByte(WSAD.wVersion) < WS_VERSIon_MAJOR Or _
            (LoByte(WSAD.wVersion) = WS_VERSIon_MAJOR And _
            HiByte(WSAD.wVersion) < WS_VERSIon_MINOR) Then

        sHiByte = CStr(HiByte(WSAD.wVersion))
        sLoByte = CStr(LoByte(WSAD.wVersion))

        sErr = "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
        SocketsInitialize = False
        Exit Function
    End If
    SocketsInitialize = True
End Function

Public Sub SocketsCleanup()
    If WSACleanup() <> ERROR_SUCCESS Then
        App.LogEvent "Socket error occurred in Cleanup.", vbLogEventTypeError
    End If
End Sub

Public Function HiByte(ByVal wParam As Integer)
    HiByte = wParam \ &H1 And &HFF&
End Function

Public Function LoByte(ByVal wParam As Integer)
    LoByte = wParam And &HFF&
End Function




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -