vb读取计算机mac地址,vb获取mac地址模块

Public CheckCode As Long

Private Const NCBASTAT                       As Long = &H33

Private Const NCBNAMSZ                       As Integer = 16

Private Const HEAP_ZERO_MEMORY               As Long = &H8

Private Const HEAP_GENERATE_EXCEPTIONS       As Long = &H4

Private Const NCBRESET                       As Long = &H32

Private 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

ncb_event                                  As Long

End Type

Private 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 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

Public Function GetMAC() As Integer

Dim bRet    As Byte

Dim myNcb   As NCB

Dim myASTAT As ASTAT

Dim pASTAT  As Long

Dim intMAC As Integer

myNcb.ncb_command = NCBRESET

bRet = Netbios(myNcb)

With myNcb

.ncb_command = NCBASTAT

.ncb_lana_num = 0

.ncb_callname = "* "

.ncb_length = Len(myASTAT)

pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, .ncb_length)

End With

If pASTAT = 0 Then

Exit Function

End If

myNcb.ncb_buffer = pASTAT

bRet = Netbios(myNcb)

CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)

intMAC = myASTAT.adapt.adapter_address(0)

intMAC = intMAC + myASTAT.adapt.adapter_address(1)

intMAC = intMAC + myASTAT.adapt.adapter_address(2)

intMAC = intMAC + myASTAT.adapt.adapter_address(3)

intMAC = intMAC + myASTAT.adapt.adapter_address(4)

intMAC = intMAC + myASTAT.adapt.adapter_address(5)

GetMAC = intMAC

Call HeapFree(GetProcessHeap(), 0, pASTAT)

End Function

Public Function GetMACAddress() As String

Dim bRet    As Byte

Dim myNcb   As NCB

Dim myASTAT As ASTAT

Dim pASTAT  As Long

myNcb.ncb_command = NCBRESET

bRet = Netbios(myNcb)

With myNcb

.ncb_command = NCBASTAT

.ncb_lana_num = 0

.ncb_callname = "* "

.ncb_length = Len(myASTAT)

pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, .ncb_length)

End With

If pASTAT = 0 Then

Exit Function

End If

myNcb.ncb_buffer = pASTAT

bRet = Netbios(myNcb)

CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)

GetMACAddress = HexEx(myASTAT.adapt.adapter_address(0)) & "-" & HexEx(myASTAT.adapt.adapter_address(1)) & "-" & HexEx(myASTAT.adapt.adapter_address(2)) & "-" & HexEx(myASTAT.adapt.adapter_address(3)) & "-" & HexEx(myASTAT.adapt.adapter_address(4)) & "-" & HexEx(myASTAT.adapt.adapter_address(5))

Call HeapFree(GetProcessHeap(), 0, pASTAT)

End Function

Private Function HexEx(ByVal B As Long) As String

Dim aa As String

aa = Hex$(B)

If Len(aa) < 2 Then

aa = "0" & aa

End If

HexEx = aa

End Function

Private Sub Command1_Click()

MsgBox GetMACAddress

End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值