`
xqf222
  • 浏览: 126934 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

查找本机网卡MAC地址的函数。网络上资料代码矫正

 
阅读更多

可以首先新建一个工程。然后添加一个类,以下是类的代码:

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


分享到:
评论

相关推荐

    DELPHI获取网卡MAC地址.pdf

    DELPHI获取网卡MAC地址是一个常见的网络编程任务,本文将详细介绍如何使用DELPHI语言获取网卡的MAC地址。 获取网卡MAC地址的方法 DELPHI获取网卡MAC地址有多种方法,本文将介绍两种常见的方法。 方法一:使用...

    Qt获取IP地址、MAC地址等网卡信息,区分本地网卡、无线网卡和虚拟网卡

    在Qt的界面上,你可以展示这些信息,例如在一个表格视图中,每一行展示一个网络接口,包括其名称、IP地址、MAC地址和类型。这有助于用户选择特定的网络接口进行操作,或者在多网络接口的环境中进行故障排查。 6. *...

    VB.NET 2008 获取本机IP、网卡MAC地址、计算机名

    在VB.NET 2008编程环境中,获取本机的IP地址、网卡MAC地址以及计算机名是常见的系统信息查询任务。这些信息对于网络通信、系统管理以及软件开发都有着重要的作用。下面将详细介绍如何利用VB.NET 2008实现这些功能。 ...

    获取本机网卡的物理地址程序(VB6.0源代码编写)' API函数声明

    在VB6.0环境下开发应用程序时,有时我们需要获取本机网卡的物理地址,也称为MAC(Media Access Control)地址。这是一个唯一标识网络接口的硬件地址。本文将深入讲解如何利用API函数在VB6.0中实现这个功能,并提供...

    NT系统取所有网卡MAC地址函数

    ### NT系统取所有网卡MAC地址函数解析及应用 #### 函数概述 本文将详细介绍一个在NT系统(包括Windows NT、2000、XP、Server 2003及后续版本)环境下获取所有网络适配器(网卡)MAC地址的函数。此函数不仅能够获取...

    VB获取网卡MAC地址代码

    ### VB获取网卡MAC地址代码解析 在计算机网络领域中,MAC地址是识别网络设备的重要标识之一,尤其在网络管理、安全控制等方面具有重要的作用。在Visual Basic(简称VB)环境中,可以通过特定的方法来获取本地计算机...

    易语言修改网卡MAC地址模块源码.zip

    《易语言修改网卡MAC地址模块源码》是一款专为编程爱好者和IT专业人士设计的工具,主要用于通过易语言进行程序开发,实现对计算机网络接口控制器(NIC)的物理地址,即MAC地址的修改功能。易语言是中国本土的一款...

    修改网卡MAC地址的C语言源代码

    在IT领域,网络接口控制...综上所述,修改网卡MAC地址的C语言源码是一个涉及到操作系统底层、PCI设备操作、内存映射I/O等高级编程技术的项目。这需要开发者具备扎实的C语言基础,以及对操作系统和硬件原理的深入理解。

    pb中获得本机IP地址\MAC地址信息纯代码方式

    这个主题聚焦在如何在PowerBuilder(PB9)中通过纯代码的方式获取本机的IP地址和MAC地址。IP地址是网络上设备的唯一标识,而MAC地址是物理网络接口控制器的唯一硬件地址。下面我们将深入探讨如何实现这一功能。 ...

    易语言修改网卡MAC地址模块源码

    本篇将重点介绍如何使用易语言来修改计算机的网卡MAC地址,并通过源码分析加深理解。 首先,我们需要了解MAC地址的基本概念。MAC地址,全称为Media Access Control Address,是网络硬件设备的物理地址,通常用于...

    批处理一键随机修改网卡MAC地址

    标题“批处理一键随机修改网卡MAC地址”指的是利用批处理(Batch Script)技术编写的一个程序,该程序能够快速地、随机地更改计算机网络适配器(即网卡)的物理地址(MAC地址)。MAC地址是设备在网络上的唯一标识,...

    Delphi获取本机所有网卡MAC和IP(支持多网卡).rar

    本项目"Delphi获取本机所有网卡MAC和IP(支持多网卡).rar"就是一个实例,展示了如何在Delphi中获取本机所有网卡的MAC和IP信息。 首先,我们需要了解基础概念。MAC地址是每个网络设备(如网卡)的唯一标识,它由6组...

    易语言取本机网卡名称

    易语言提供了“网络_取本机网卡列表”这个函数,用于获取本机所有网卡的信息。这个函数返回一个列表,包含了所有网卡的详细信息,包括名称、MAC地址、IP地址等。开发者可以通过遍历这个列表,获取到所需的具体网卡...

    MacBindingTool_程序启动绑定MAC地址_RSA加密MAC地址绑定_获取本机所有网卡MAC地址_

    在Linux和Windows环境下,获取本机所有网卡MAC地址的方法略有不同。在Linux中,可以通过`ifconfig`命令或`/sys/class/net`目录下的文件系统接口来获取;而在Windows中,可以使用WMI(Windows Management ...

    C#修改网卡MAC地址的源码,可以随机生成地址

    综上所述,这个C#程序提供了修改和随机生成网卡MAC地址的功能,对于需要在Windows系统中进行此类操作的开发者或测试人员来说非常有用。使用时需注意安全性和合法性,以及可能遇到的系统兼容性问题。

    网卡MAC地址修改工具.rar

    网卡MAC地址,全称Media Access Control Address,是网络接口控制器的一个唯一标识,通常烧录在设备的物理芯片上,用于在网络中唯一识别每个设备。MAC地址由6个字节(48位)组成,分为6段,每段用两个十六进制数字...

    PHP获取网卡MAC地址代码.rar

    标题"PHP获取网卡MAC地址代码.rar"提示我们这是一个压缩包,其中包含了用PHP编写的代码,目的是获取计算机上某一网卡的MAC地址。这个压缩包可能包含了一个类文件和一个演示如何使用该类的示例文件。由于描述中提到...

    批处理命令修改网卡mac地址

    使用批处理命令对注册表中网卡mac地址进行修改,该方法需要用户自行鉴别网卡路径目录

    e语言-易语言取多网卡MAC地址

    在"易语言-易语言取多网卡MAC地址"这个主题中,我们将深入探讨如何利用易语言来获取计算机中的多个网络适配器(网卡)的物理地址,即MAC地址。 MAC地址,全称Media Access Control Address,是网络硬件设备的唯一...

Global site tag (gtag.js) - Google Analytics