国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
【轉(zhuǎn)載】VB6獲取本機(jī)IP的API,可以獲取局域網(wǎng)IP和互聯(lián)網(wǎng)IP【恢復(fù)】 中國電子開發(fā)網(wǎng)...
Option Explicit

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&, 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&)



Private Function hibyte(ByVal wParam As Integer)
    hibyte = wParam \ &H100 And &HFF&
End Function


Private Function lobyte(ByVal wParam As Integer)
    lobyte = wParam And &HFF&
End Function


Private 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
        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
            'Debug.Print sMsg
            'sMsg = sMsg & " winsock.dll tarafindan desteklenmiyor. "
            'MsgBox sMsg
            'End
        End If
    Else
        'Debug.Print "Winsock.dll Error."
    End If

End Sub


Public Function GetCurrentIP(ByVal blnExternalIP As Boolean) As String

    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
    Dim IP As String
    Dim Internal As String
    Dim EXTERNAL As String
    
    If gethostname(hostname, 256) <> SOCKET_ERROR Then
        hostname = Trim$(hostname)
        
        hostent_addr = gethostbyname(hostname)
        
        If hostent_addr <> 0 Then
            RtlMoveMemory host, hostent_addr, LenB(host)
            RtlMoveMemory hostip_addr, host.hAddrList, 4
            
            Do
                ReDim temp_ip_address(1 To host.hLength)
                RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength
                
                
                For i = 1 To host.hLength
                    ip_address = ip_address & temp_ip_address(i) & "."
                Next
                ip_address = Mid$(ip_address, 1, Len(ip_address) - 1)
                
                ' Return Both LAN and External IP Fix
                ' Master Yoda 30-05-2000
                ' ##########################################
                ' HERE'S THE PROBLEM!!!
                'TheIP = TheIP + ip_address
                ' ##########################################
                ' HERE'S THE FIX!!!
                Internal = IP ' Send ONLY the External IP to the CurrentIP Function
                EXTERNAL = ip_address ' Send the External IP to the function parameter External
                IP = ip_address ' Send LAN IP to the function para Internal
                
                ' You don't really need to return parameters,
                ' it just allows you to get both IPs :)
                ' ##########################################
                
                ip_address = ""
                host.hAddrList = host.hAddrList + LenB(host.hAddrList)
                RtlMoveMemory hostip_addr, host.hAddrList, 4
            Loop While (hostip_addr <> 0)
            
            If blnExternalIP = True Then
                GetCurrentIP = EXTERNAL
            Else
                GetCurrentIP = Internal
            End If
        Else
        'Debug.Print "Winsock.dll error."
        
        GetCurrentIP = ""
        End If
    Else
        'Debug.Print "Windows Socket Error " & Str(WSAGetLastError())
        
        GetCurrentIP = ""
    End If

End Function


Private Sub SocketsCleanup()
    
    Dim lReturn As Long
    
    lReturn = WSACleanup()
    
    If lReturn <> 0 Then
    'MsgBox "Socket Error " & Trim$(Str$(lReturn)) & " occurred In Cleanup "
    End If
End Sub


Private Sub Class_Initialize()

    SocketsInitialize

End Sub


Private Sub Class_Terminate()

    SocketsCleanup

End Sub
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB.NET自動操作其他程序(2)
VB編外掛的一些基礎(chǔ)知識
VB 判斷IP能否ping通
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服