try this, you may not need it all................
Code:'Name Flags Public Const NAME_FLAGS_MASK = &H87 Public Const GROUP_NAME = &H80 Public Const UNIQUE_NAME = &H0 Public Const REGISTERING = &H0 Public Const REGISTERED = &H4 Public Const DEREGISTERED = &H5 Public Const DUPLICATE = &H6 Public Const DUPLICATE_DEREG = &H7 Public Const NCBNAMSZ = 16 Public Const HEAP_ZERO_MEMORY = &H8 Public Const HEAP_GENERATE_EXCEPTIONS = &H4 Public Const NCBENUM = &H37 Public Const NCBRESET = &H32 Public Const NCBASTAT = &H33 Public Type NTWRKCNTRLBLCK 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(0 To 15) As Byte ncb_name(0 To 15) As Byte ncb_rto As Byte ncb_sto As Byte lpFunc As Long ncb_lana_num As Byte ncb_cmd_cplt As Byte ncb_reserve(0 To 9) As Byte ncb_event As Long End Type Public Type LANA_ENUM Length As Byte lana(0 To 256) As Byte End Type Public 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 Public Type NAME_BUFFER name_(0 To 15) As Byte name_num As Byte name_flags As Byte End Type Public Type NET_STATUS Adapter As ADAPTER_STATUS NameBuffer(30) As NAME_BUFFER End Type Public Type DiskInformation lpSectorsPerCluster As Long lpBytesPerSector As Long lpNumberOfFreeClusters As Long lpTotalNumberOfClusters As Long End Type Public Declare Function NetBios Lib "netapi32.dll" Alias "Netbios" _ (ByRef pncb As NTWRKCNTRLBLCK) As Byte Public Declare Function VarPtr Lib "MSVBVM50.DLL" (pVoid As Any) As Long Public Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" _ (ByVal lpRootPathName As String, _ lpSectorsPerCluster As Long, _ lpBytesPerSector As Long, _ lpNumberOfFreeClusters As Long, _ lpTotalNumberOfClusters As Long) As Long Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _ (ByVal nDrive As String) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _ hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) Public Declare Function GetProcessHeap Lib "kernel32" () As Long Public Declare Function HeapAlloc Lib "kernel32" _ (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long Public Declare Function HeapFree Lib "kernel32" (ByVal hHeap As Long, _ ByVal dwFlags As Long, lpMem As Any) As Long Public Sub GetMacAddr() ' ' Dim NCB As NTWRKCNTRLBLCK, Status As NET_STATUS, LanEnum As LANA_ENUM Dim bReturn As Byte, sMacAddress As String, i As Integer, sHex As String, l% Dim k%, iNumNames%, j%, m%, sName$, iPos%, nFlags% NCB.ncb_command = NCBENUM NCB.ncb_buffer = VarPtr(LanEnum) NCB.ncb_length = LenB(LanEnum) bReturn = NetBios(NCB) l = LanEnum.Length If l > 0 Then For k = 0 To l NCB.ncb_command = NCBRESET NCB.ncb_lana_num = LanEnum.lana(k) bReturn = NetBios(NCB) NCB.ncb_command = NCBASTAT NCB.ncb_lana_num = LanEnum.lana(k) NCB.ncb_callname(0) = 42 'Max number of sessions 42 For i = 1 To 14 NCB.ncb_callname(i) = 32 'Max number of names 32, Use NAME_NUMBER_1 Next i NCB.ncb_callname(15) = 0 NCB.ncb_buffer = VarPtr(Status) NCB.ncb_length = LenB(Status) bReturn = NetBios(NCB) strNet = strNet & "Network #" & Hex$(k) & vbCrLf & Chr$(9) sMacAddress = "" For i = 0 To 5 sHex = Hex(Status.Adapter.adapter_address(i)) If Len(sHex) = 1 Then sHex = "0" & sHex sMacAddress = sMacAddress & sHex If i <> 5 Then sMacAddress = sMacAddress + "-" Next i strNet = strNet & "Mac Address = " & UCase(sMacAddress) & vbCrLf & Chr$(9) strNet = strNet & "Adapter Type = " & Hex$(Status.Adapter.adapter_type) & vbCrLf & Chr$(9) strNet = strNet & vbCrLf Next k End If End Sub




Reply With Quote