如何通过VB获取网卡地址

   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

  if rame_recv_err As Integer

  xmit_aborts As Integer

  xmit_success As Long

  recv_success As Long

  if rame_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。注意,网卡地址将在一信息框中显示出来。

时间: 2024-12-30 05:54:32

如何通过VB获取网卡地址的相关文章

获取网卡地址 MAC

using System.Management; 获取网卡地址 MAC public string GetMacAddress(){ManagementClass adapters = new ManagementClass("Win32_NetworkAdapterConfiguration");string MACAddress = "unknown";foreach (ManagementObject adapter in adapters.GetInstan

多次获取网卡地址的结果不一样是怎么回事啊?

问题描述 我在托管C++里面找这别人的例子写了个获取网卡地址的函数,运行的时候也能正常的获取网卡地址,只是不知道为什么多次运行的结果不一样?有的机子怎么运行获取都是一样的,有的机子这次和下次运行的就不一样,还有,把网络禁用前后获取的结果也不一样?怎么回事啊?请教各位大侠了,下面是我获取网卡地址的函数:String^GetMacAddress(){String^strMac;try{ManagementPath^mgpath=gcnewManagementPath("Win32_NetworkAd

win7下无法执行nbtstat.exe命令获取网卡地址?

问题描述 想用nbtstat.exe执行发现执行结果为空,但是在命令窗口中执行时可以的,那位遇到过同样的问题?importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassTestRuntime{publicstaticvoidmain(String[]args){try{Processprocess=Runtime.getRuntime().exec("cmd/cC:\Windows\system32\nbtst

PHP获取网卡地址的代码_php技巧

复制代码 代码如下: <?php     @exec("ipconfig /all",$array);     for($Tmpa;$Tmpa<count($array);$Tmpa++){         if(eregi("Physical",$array[$Tmpa])){             $getstr=explode(":",$array[$Tmpa]);             echo $getstr[1];  

PHP获取网卡MAC地址

<?php     /**     获取网卡的MAC地址原码:目前支持WIN/LINUX系统     获取机器网卡的物理(MAC)地址     **/            class GetMacAddr{                    var $return_array = array(); // 返回带有MAC地址的字串数组             var $mac_addr;                    function GetMacAddr($os_type){  

网卡无法获取IP地址自己给他找个

电脑出现网卡无法获取IP地址出现这类问题,可以尝试更改网卡工作模式来解决.展开"设备管理器"中的"网络适配器",然后双击网卡驱动标志,然后切换到 "高级"选项,在属性中将网卡工作速率模式由自动模式改为10Mbps全双工模式.如果还是不能解决问题,很有可能是主板与网卡不兼容,你可以尝试通过升级最新版的主板BIOS试试,实在不行只有更换网卡.

Windows 8系统有线网卡自动获取IP地址

  设置动画示范教程: Windows 8系统有线网卡自动获取IP地址设置动画 Windows 8系统有线网卡自动获取IP地址的详细设置步骤如下: 第一步:进入Windows 8系统的经典桌面,在电脑桌面右下角找到网络图标,右键点击并选择 打开网络和共享中心.如下图所示: 第二步:弹出 网络和共享中心 的界面,点击 更改适配器设置.如下图所示: 第三步:打开 更改适配器设置后,找到 以太网,右键点击并选择 属性.如下图所示: 第四步:找到并点击 Internet协议版本4(TCP/IPv4),点

Windows7有线网卡自动获取IP地址设置

  设置动画示范教程: Windows 7系统有线网卡自动获取IP地址的详细设置步骤如下: 第一步:鼠标点击电脑桌面右下角小电脑图标,在弹出的对话框中,点击 打开网络和共享中心.如下图所示: 第二步:弹出 网络和共享中心 的界面,点击 更改适配器设置.如下图所示: 第三步:找到 本地连接,右键点击并选择 属性.如下图所示: 第四步:找到并点击 Internet协议版本4(TCP/IPv4),点击 属性.如下图所示: 第五步:选择 自动获得IP地址(O).自动获得DNS服务器地址(B),点击 确定

Windows XP系统有线网卡自动获取IP地址设置

  设置动画示范教程: Windows XP系统有线网卡自动获取IP地址设置动画 操作步骤: Windows XP系统有线网卡自动获取IP地址的详细设置步骤如下: 第一步:电脑桌面上找到 网上邻居 的图标,右键点击并选择 属性.如下图所示: 第二步:弹出 网络连接 的对话框后,找到 本地连接 的图标,右键点并选择 属性.如下图所示: 第三步:出现 本地连接属性 的对话框后,找到并点击 Internet协议(TCP/IP),点击 属性.如下图所示: 第四步:选择 自动获得IP地址(0).自动获得D