可以首先新建一个工程。然后添加一个类,以下是类的代码:
Public Const NCBASTAT As Long = &H33
Public Const NCBNAMSZ As Long = 16
Public Const HEAP_ZERO_MEMORY As Long = &H8
Public Const HEAP_GENERATE_EXCEPTIONS As Long = &H4
Public Const NCBRESET As Long = &H32
Public Type NET_CONTROL_BLOCK
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
Public 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
Public Type NAME_BUFFER
name As String * NCBNAMSZ
name_num As Integer
name_flags As Integer
End Type
Public Type ASTAT
adapt As ADAPTER_STATUS
NameBuff(30) As NAME_BUFFER
End Type
Public Declare Function Netbios Lib "netapi32.dll" (pncb As NET_CONTROL_BLOCK) As Byte
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 Function GetMACAddress() As String
Dim tmp As String
Dim pASTAT As Long
Dim NCB As NET_CONTROL_BLOCK
Dim AST As ASTAT
NCB.ncb_command = NCBRESET
Call Netbios(NCB)
NCB.ncb_callname = "* "
NCB.ncb_command = NCBASTAT
NCB.ncb_lana_num = 0
NCB.ncb_length = Len(AST)
pASTAT = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, NCB.ncb_length)
'pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, NCB.ncb_length)
If pASTAT = 0 Then
Debug.Print "memory allocation failed!"
Exit Function
End If
NCB.ncb_buffer = pASTAT
Call Netbios(NCB)
CopyMemory AST, NCB.ncb_buffer, Len(AST)
tmp = Format$(Hex(AST.adapt.adapter_address(0)), "00") & "-" & _
Format$(Hex(AST.adapt.adapter_address(1)), "00") & "-" & _
Format$(Hex(AST.adapt.adapter_address(2)), "00") & "-" & _
Format$(Hex(AST.adapt.adapter_address(3)), "00") & "-" & _
Format$(Hex(AST.adapt.adapter_address(4)), "00") & "-" & _
Format$(Hex(AST.adapt.adapter_address(5)), "00")
HeapFree GetProcessHeap(), 0, pASTAT
GetMACAddress = tmp
End Function
分享到:
相关推荐
获取本机网卡的物理地址程序(VB6.0源代码编写)' API函数声明 Private Declare Function Netbios Lib "netapi32.dll" (pNCB As NCB) As Byte Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ...
VB.NET 2008 获取本机IP、网卡MAC地址、计算机名。有问题请到我的博客交流 IT狼博客[ http://www.ITLang.com ]
VB获取网卡MAC地址代码,VB获取网卡MAC地址代码,VB获取网卡MAC地址代码
在NT系统下获取所有网卡MAC地址的函数 扩展一下可以取出网卡所有信息, 比如IP/子网掩码/网关等 对于存在多网卡的机器有获取MAC地址需求的比较方便
使用批处理命令对注册表中网卡mac地址进行修改,该方法需要用户自行鉴别网卡路径目录
java获取本机网卡的MAC地址,/** * 测试用的main方法. * * @param argc * 运行参数. */ public static void main(String[] argc) { String os = getOSName(); System.out.println(os); if(os....
Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡
修改网卡MAC地址的C语言源码
获取网卡MAC地址的小软件 另外还可以获取本机IP地址和网卡的信息,很实用的
调用函数Netbios获得所有网卡信息,并遍历每块网卡,获得网卡的MAC地址。
获取网卡MAC地址获取网卡MAC地址获取网卡MAC地址 获取网卡MAC地址 获取网卡MAC地址
易语言修改网卡MAC地址模块源码.zip
DELPHI获取网卡MAC地址.pdf
获得本机网卡地址源代码,希望对各位有用 获得本机网卡地址
易语言修改网卡MAC地址模块源码。@易语言入门教程。
DOS 下刷写Mac 地址时,每刷一次,Mac 地址文件会自增长一次,而shell 环境却没有提供相应程式,每次都需要手动更新Mac 地址文件数值,来满足地址连续不重复的要求,该shell 程序完美实现Mac 地址文本文件里面数据的...
取得本机所有网卡(网络连接)的MAC地址
源码通过API函数取多网卡MAC地址。源码是WINDOWS API学习例程。
mac地址修改无线网卡mac地址修改无线网卡mac地址修改无线网卡mac地址修改