MyException - 我的异常网
当前位置:我的异常网» VB » 上面的代码,不能获取的物理地址?

上面的代码,不能获取的物理地址?(3)

www.MyException.Cn  网友分享于:2013-02-20  浏览:12次

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
'把下面的代码放入Command1_Click的事件中:
Private Sub Command1_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
4)按F5,运行该程序。
5)点击Command1。注意,网卡地址将在一信息框中显示出来。

------解决方案--------------------
Mac地址有什么用?很容易改的吧
------解决方案--------------------
不用这么麻烦吧?用WMI可以获取
------解决方案--------------------
用DeviceIoControl函数能获取物理MAC地址
------解决方案--------------------
单纯用wmi获取的不一定是真实的MAC地址
------解决方案--------------------
Netbios API的不妨再参考一下这个帖子里的得分答案,虽然我个人刚才随便在WIN7下测试了下得不到结果:
http://bbs.csdn.net/topics/30308204
请问:如何获得网络上网卡的Mac [问题点数:70分,结帖人s6w6k] 

我更会优先考虑wmi的方案,这里整理了下前人的代码如下:

Option Explicit

Private Sub Form_Load()
    MsgBox EnumMACAddresses
End Sub
'---------------------------------------------------
' 过程名    : EnumMACAddresses
' 时间      : 2013-2-8 22:06
' 作者      : 杨过.网狐.cn(csdn bcrun)
' 功能      : 枚举本机网卡信息,主要是Mac地址
' 说明      : 因为这方面需求似乎没有通用的参数和返回值标准,这里只是做个示例
' 备注      : CSDN之VB一群:283362041,星辰学园BASIC辅导群:289219875
'---------------------------------------------------
Private Function EnumMACAddresses() As String
    Dim obj1 As Object, oObjs As Object

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有