温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

VB.NET中如何获取网卡地址

发布时间:2021-07-28 17:54:32 阅读:374 作者:Leah 栏目:编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

今天就跟大家聊聊有关VB.NET中如何获取网卡地址,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

VB.NET获取网卡地址步骤:

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  

把下面的VB.NET获取网卡地址的代码放入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。注意,网卡地址将在一信息框中显示出来。至此,VB.NET获取网卡地址的操作就结束了。

看完上述内容,你们对VB.NET中如何获取网卡地址有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×