VB.NET开发语言是一款面向对象的功能强大的编程语言。它的应用可以帮助开发人员实现许多功能需求。比如VB.NET获取网卡地址等。下面就会针对这一方法进行一个详细的解读,希望对大家有所帮助。#t#

十年的昌乐网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整昌乐建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“昌乐网站设计”,“昌乐网站推广”以来,每个客户项目都认真落实执行。
程序语言: Microsoft Visual Basic 4.0,5.0,6.0
运行平台: WINDOWS
功能描述: IPX和NETBIOS接口需要网络地址。该文通过详细的步骤演示了如何通过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获取网卡地址的操作就结束了。