如何通过VB获取网卡地址

原创 2001年02月22日 08:24:00
1)在Visual Basic生成标准的EXE文件。缺省创建 Form1。
2)在Form1中添加一命令按钮,缺省名为Command1。
3)把下列代码放到Form1中说明部分。

Option Explicit
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

把下面的代码放入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 Su
5)点击Command1。注意,网卡地址将在一信息框中显示出来。

vb取网卡Mac地址代码

[程序语言] Microsoft Visual Basic 4.0,5.0,6.0[运行平台] WINDOWS[源码来源] http://support.microsoft.com/support/k...
  • QQ1854520
  • QQ1854520
  • 2006年10月31日 22:42
  • 1228

VB获取所有网卡MAC地址

VB 网络变成 MAC地址 网卡
  • bodybo
  • bodybo
  • 2010年07月27日 11:32
  • 4402

VB获取网卡MAC地址代码

Option ExplicitPrivate Const NCBASTAT = &H33Private Const NCBNAMSZ = 16Private Const HEAP_ZERO_MEMOR...
  • wjb9921
  • wjb9921
  • 2009年12月25日 04:47
  • 1934

如何通过VB获取网卡地址

[程序语言] Microsoft Visual Basic 4.0,5.0,6.0[运行平台] Windows[功能描述] IPX和NETBIOS接口需要网络地址。该文通过详细的步骤演示了如何通过VB...
  • tripofdream
  • tripofdream
  • 2001年07月03日 15:58
  • 796

VB6获取网卡信息

需要用VB6读取网卡网管信息,进行设置,所以找了一段代码,使用的是WMI的系统查询方式,循环所有网络适配器,取得信息 当然可以加判断处理下了。 ...
  • lanwilliam
  • lanwilliam
  • 2010年10月30日 14:59
  • 764

请问如何在内核中得到网卡的mac地址?根据网卡名子得到mac地址也可

ww7109(stranger)04-08-23 14:10 请问如何在内核中得到网卡的mac地址?根据网卡名子得到mac地址也可 回复 文章选项:       dl_dht(addict)0...
  • ryman
  • ryman
  • 2005年04月24日 15:48
  • 3095

如何用C语言获取网卡的mac地址?(当然,你也可以用类似方法获取所有ip)

在实际项目中,常常需要获取网卡的mac地址,下面,用C语言来做: #include #include #include #pragma comment(lib, "iphlpapi.lib") ...
  • stpeace
  • stpeace
  • 2013年10月19日 00:29
  • 6925

java通过ip获取网卡MAC地址

java通过ip获取网卡MAC地址
  • jacke121
  • jacke121
  • 2017年04月16日 20:20
  • 1038

通过网卡名字获取ip

#include #include #include #include #include #include #include #include #include #include ...
  • u011334621
  • u011334621
  • 2015年10月26日 12:15
  • 564

多网卡存在情况下获取指定网卡的MAC地址

应用软件中经常有需要显示mac地址的功能,方便用户判断当前联网状态,如果是在多网卡存在(无线,有线等)下,网络会经常切换,获取到的MAC地址可能与预期不同,现给出指定网卡获取mac地址的方法。void...
  • u010133805
  • u010133805
  • 2017年05月04日 22:02
  • 393
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何通过VB获取网卡地址
举报原因:
原因补充:

(最多只允许输入30个字)