说清楚点吗,你不说清楚我怎么知道回答呢

解决方案 »

  1.   

    以下是获取网卡地址之代码,草船借箭得来。该给分吧!
    '获取网卡IP地址调用到的API函数
    Private Const NCBASTAT = &H33
    Private Const NCBNAMSZ = 16
    Private Const HEAP_ZERO_MEMORY = &H8
    Private Const HEAP_GENERATE_EXCEPTIONS = &H4
    Private Const NCBRESET = &H32Private Type NCB
        ncb_command As Byte 'Integer
        ncb_retcode As Byte 'Integer
        ncb_lsn As Byte 'Integer
        ncb_num As Byte ' Integer
        ncb_buffer As Long 'String
        ncb_length As Integer
        ncb_callname As String * NCBNAMSZ
        ncb_name As String * NCBNAMSZ
        ncb_rto As Byte 'Integer
        ncb_sto As Byte ' Integer
        ncb_post As Long
        ncb_lana_num As Byte 'Integer
        ncb_cmd_cplt As Byte 'Integer
        ncb_reserve(9) As Byte ' Reserved, must be 0
        ncb_event As Long
    End TypePrivate Type ADAPTER_STATUS
        adapter_address(5) As Byte 'As String * 6
        rev_major As Byte 'Integer
        reserved0 As Byte 'Integer
        adapter_type As Byte 'Integer
        rev_minor As Byte 'Integer
        duration As Integer
        frmr_recv As Integer
        frmr_xmit As Integer
        iframe_recv_err As Integer
        xmit_aborts As Integer
        xmit_success As Long
        recv_success As Long
        iframe_xmit_err As Integer
        recv_buff_unavail As Integer
        t1_timeouts As Integer
        ti_timeouts As Integer
        Reserved1 As Long
        free_ncbs As Integer
        max_cfg_ncbs As Integer
        max_ncbs As Integer
        xmit_buf_unavail As Integer
        max_dgram_size As Integer
        pending_sess As Integer
        max_cfg_sess As Integer
        max_sess As Integer
        max_sess_pkt_size As Integer
        name_count As Integer
    End TypePrivate Type NAME_BUFFER
        name As String * NCBNAMSZ
        name_num As Integer
        name_flags As Integer
    End TypePrivate Type ASTAT
        adapt As ADAPTER_STATUS
        NameBuff(30) As NAME_BUFFER
    End TypePrivate Declare Function Netbios Lib "netapi32.dll" (pncb As NCB) As Byte
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
    Private Declare Function GetProcessHeap Lib "kernel32" () As Long
    Private Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long'获取网卡物理地址
    Public Function GetNetworkCard() As String
    On Error GoTo err
        Dim myNcb As NCB
        Dim bRet As Byte    myNcb.ncb_command = NCBRESET
        bRet = Netbios(myNcb)
        myNcb.ncb_command = NCBASTAT
        myNcb.ncb_lana_num = 0
        myNcb.ncb_callname = "*       "
        Dim myASTAT As ASTAT, tempASTAT As ASTAT
        Dim pASTAT As Long
        myNcb.ncb_length = Len(myASTAT)
        Debug.Print err.LastDllError
        pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, myNcb.ncb_length)
        If pASTAT = 0 Then
            Debug.Print "memory allcoation failed!"
            Exit Function
        End If
        myNcb.ncb_buffer = pASTAT
        bRet = Netbios(myNcb)
        Debug.Print err.LastDllError
        CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)
        GetNetworkCard = Hex(myASTAT.adapt.adapter_address(0)) & " " & Hex(myASTAT.adapt.adapter_address(1)) _
            & " " & Hex(myASTAT.adapt.adapter_address(2)) & " " _
            & Hex(myASTAT.adapt.adapter_address(3)) _
            & " " & Hex(myASTAT.adapt.adapter_address(4)) & " " _
            & Hex(myASTAT.adapt.adapter_address(5))
        HeapFree GetProcessHeap(), 0, pASTAT
        Exit Function
    err:
        Dim ErrMsg As String
        ErrMsg = err.LastDllError & Chr(13) & err.Description & Chr(13) & "请求系统管理员维护!"
        ErrProcess True, ErrMsg
    End Function