读出网卡号码

    技术2022-05-11  144

     

    Option Explicit

    Private Const NCBASTAT = &H33Private Const NCBNAMSZ = 16Private Const HEAP_ZERO_MEMORY = &H8Private Const HEAP_GENERATE_EXCEPTIONS = &H4Private Const NCBRESET = &H32Private Type NCB  ncb_command As Byte  ncb_retcode As Byte  ncb_lsn As Byte  ncb_num As Byte  ncb_buffer As Long  ncb_length As Integer  ncb_callname As String * NCBNAMSZ  ncb_name As String * NCBNAMSZ  ncb_rto As Byte  ncb_sto As Byte  ncb_post As Long  ncb_lana_num As Byte  ncb_cmd_cplt As Byte  ncb_reserve(9) As Byte ' Reserved, must be 0  ncb_event As LongEnd TypePrivate Type ADAPTER_STATUS  adapter_address(5) As Byte  rev_major As Byte  reserved0 As Byte  adapter_type As Byte  rev_minor As Byte  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 IntegerEnd TypePrivate Type NAME_BUFFER  name As String * NCBNAMSZ  name_num As Integer  name_flags As IntegerEnd TypePrivate Type ASTAT  adapt As ADAPTER_STATUS  NameBuff(30) As NAME_BUFFEREnd TypePrivate Declare Function Netbios Lib "netapi32.dll" (pncb As NCB) As BytePrivate 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 LongPrivate Declare Function HeapAlloc Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As LongPrivate Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long

    Private Function EthernetAddress(LanaNumber As Long) As String  Dim udtNCB      As NCB  Dim bytResponse  As Byte  Dim udtASTAT    As ASTAT  Dim udtTempASTAT As ASTAT  Dim lngASTAT    As Long  Dim strOut      As String  Dim x            As Integer  udtNCB.ncb_command = NCBRESET  bytResponse = Netbios(udtNCB)  udtNCB.ncb_command = NCBASTAT  udtNCB.ncb_lana_num = LanaNumber  udtNCB.ncb_callname = "* "  udtNCB.ncb_length = Len(udtASTAT)  lngASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, udtNCB.ncb_length)  strOut = ""  If lngASTAT Then    udtNCB.ncb_buffer = lngASTAT    bytResponse = Netbios(udtNCB)    CopyMemory udtASTAT, udtNCB.ncb_buffer, Len(udtASTAT)    With udtASTAT.adapt      For x = 0 To 5        strOut = strOut & Right$("00" & Hex$(.adapter_address(x)), 2)      Next x    End With    HeapFree GetProcessHeap(), 0, lngASTAT  End If  EthernetAddress = strOutEnd Function

    Private Sub Command1_Click()    Me.Caption = EthernetAddress(0)    MsgBox "NetCard Number:" + (Chr(13)) + EthernetAddress(0)End Sub


    最新回复(0)