MartyConnelly
martyconnelly at shaw.ca
Sat Jan 3 14:06:35 CST 2004
If you have WinXP Pro from cmd window Getmac /V /FO List You can also get via WMI with code John W. Colby wrote: >Nope, comes back 0:0:0:0 > >I have found a half dozen solutions, and all do this. It appears to be a >case of which protocol you are bound to. This uses netbios which >(apparently) my computer isn't using. > >It seems like a network card, or it's driver, could just be asked what the >mac address is. > >John W. Colby >www.ColbyConsulting.com > >-----Original Message----- >From: accessd-bounces at databaseadvisors.com >[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Stuart >McLachlan >Sent: Friday, January 02, 2004 9:52 PM >To: Access Developers discussion and problem solving >Subject: Re: [AccessD] Mac address > > >On 2 Jan 2004 at 19:53, John W. Colby wrote: > > > >>Does anyone have code for retrieving the Mac address of the network card >> >> >in > > >>a PC? >> >> >> > >This will do it. I got it from >http://www.vbadmincode.btinternet.co.uk/code.htm: > > >Private Const NCBASTAT = &H33 >Private Const NCBNAMSZ = 16 >Private Const HEAP_ZERO_MEMORY = &H8 >Private Const HEAP_GENERATE_EXCEPTIONS = &H4 >Private Const NCBRESET = &H32 > >Private 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 Type > Private 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 Type > Private Type NAME_BUFFER > name As String * NCBNAMSZ > name_num As Integer > name_flags As Integer > End Type > Private Type ASTAT > adapt As ADAPTER_STATUS > NameBuff(30) As NAME_BUFFER > End Type > > Private 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 > > Sub Command0_Click() > 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 Sub > End If > myNcb.ncb_buffer = pASTAT > bRet = Netbios(myNcb) > Debug.Print Err.LastDllError > CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT) > MsgBox 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 > End Sub > >-- >Lexacorp Ltd >http://www.lexacorp.com.pg >Information Technology Consultancy, Software Development,System >Support. > > > >_______________________________________________ >AccessD mailing list >AccessD at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/accessd >Website: http://www.databaseadvisors.com > > > >_______________________________________________ >AccessD mailing list >AccessD at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/accessd >Website: http://www.databaseadvisors.com > > > -- Marty Connelly Victoria, B.C. Canada