How Do I Use This CodeCode:Option Explicit Private Const NCBNAMSZ = 16 Private Const MAX_LANA = 254 Private Const NCBENUM = &H37 Private Const NCBRESET = &H32 Private Const NCBASTAT = &H33 Private Type ADAPTER_STATUS adapter_address(0 To 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 Integer End Type Private Type NAME_BUFFER name_(0 To NCBNAMSZ - 1) As Byte name_num As Byte name_flags As Byte End Type Private Type ASTAT adapt As ADAPTER_STATUS NameBuff(0 To 29) As NAME_BUFFER End Type Private Type NCB ncb_command As Byte ncb_retcode As Byte ncb_lsn As Byte ncb_num As Byte p_ncb_buffer As Long ncb_length As Integer ncb_callname(0 To NCBNAMSZ - 1) As Byte ncb_name(0 To NCBNAMSZ - 1) As Byte ncb_rto As Byte ncb_sto As Byte p_ncb_post As Long ncb_lana_num As Byte ncb_cmd_cplt As Byte ncb_reserve(0 To 10 - 1) As Byte ncb_event As Long End Type Private Type LANA_ENUM length As Byte lana(0 To MAX_LANA - 1) As Byte End Type Private Declare Function Netbios Lib "netapi32.dll" _ (pncb As NCB) As Byte Private Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (dest As Any, src As Any, ByVal length As Long) As Long Public Sub GetMacAddress(colMacAddress As Collection) Dim Adapter As ASTAT Dim SNcb As NCB Dim uRetCode As Byte Dim NetName(0 To 49) As Byte Dim Blank(Len(SNcb)) As Byte Dim Blank2(Len(Adapter)) As Byte Dim lenum As LANA_ENUM Dim i As Long Dim j As Long Dim sMac As String CopyMemory SNcb, Blank(0), Len(SNcb) With SNcb .ncb_command = NCBENUM .p_ncb_buffer = VarPtr(lenum) .ncb_length = Len(lenum) End With uRetCode = Netbios(SNcb) For i = 0 To lenum.length - 1 CopyMemory SNcb, Blank(0), Len(SNcb) With SNcb .ncb_command = NCBRESET .ncb_lana_num = lenum.lana(i) End With uRetCode = Netbios(SNcb) CopyMemory SNcb, Blank(0), Len(SNcb) CopyMemory Adapter, Blank2(0), Len(Adapter) With SNcb .ncb_command = NCBASTAT .ncb_lana_num = lenum.lana(i) .p_ncb_buffer = VarPtr(Adapter) .ncb_length = Len(Adapter) .ncb_callname(0) = Asc("*") For j = 1 To 15 .ncb_callname(j) = Asc(" ") Next End With uRetCode = Netbios(SNcb) If uRetCode = 0 Then With Adapter.adapt sMac = Right("00" & Hex(.adapter_address(0)), 2) & _ Right("00" & Hex(.adapter_address(1)), 2) & _ Right("00" & Hex(.adapter_address(2)), 2) & _ Right("00" & Hex(.adapter_address(3)), 2) & _ Right("00" & Hex(.adapter_address(4)), 2) & _ Right("00" & Hex(.adapter_address(5)), 2) End With colMacAddress.Add sMac End If Next End Sub




Reply With Quote