vb.net

位置:IT落伍者 >> vb.net >> 浏览文章

如何通过VB.NET获取网卡地址


发布日期:2023年05月02日
 
如何通过VB.NET获取网卡地址

程序语言Microsoft Visual Basic

运行平台WINDOWS

功能描述IPX和NETBIOS接口需要网络地址该文通过详细的步骤演示了如何通过VB获取网卡地址

步骤

)在Visual Basic生成标准的EXE文件缺省创建 Form

)在Form中添加一命令按钮缺省名为Command

)把下列代码放到Form中说明部分

Option Explicit

Private Const NCBASTAT = &H

Private Const NCBNAMSZ =

Private Const HEAP_ZERO_MEMORY = &H

Private Const HEAP_GENERATE_EXCEPTIONS = &H

Private Const NCBRESET = &H

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() As Byte Reserved must be

ncb_event As Long

End Type

Private Type ADAPTER_STATUS

adapter_address() As Byte As String *

rev_major As Byte Integer

reserved 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

t_timeouts As Integer

ti_timeouts As Integer

Reserved 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() As NAME_BUFFER

End Type

Private Declare Function Netbios Lib netapidll (pncb As NCB) As Byte

Private Declare Sub CopyMemory Lib kernel Alias RtlMoveMemory _

(hpvDest As Any ByVal hpvSource As Long ByVal cbCopy As Long)

Private Declare Function GetProcessHeap Lib kernel () As Long

Private Declare Function HeapAlloc Lib kernel _

(ByVal hHeap As Long ByVal dwFlags As Long _

ByVal dwBytes As Long) As Long

Private Declare Function HeapFree Lib kernel (ByVal hHeap As Long_

ByVal dwFlags As Long lpMem As Any) As Long

把下面的代码放入Command_Click的事件中

Private Sub Command_Click()

Dim myNcb As NCB

Dim bRet As Byte

myNcbncb_command = NCBRESET

bRet = Netbios(myNcb)

myNcbncb_command = NCBASTAT

myNcbncb_lana_num =

myNcbncb_callname = *

Dim myASTAT As ASTAT tempASTAT As ASTAT

Dim pASTAT As Long

myNcbncb_length = Len(myASTAT)

DebugPrint ErrLastDllError

pASTAT = HeapAlloc(GetProcessHeap() HEAP_GENERATE_EXCEPTIONS _

Or HEAP_ZERO_MEMORY myNcbncb_length)

If pASTAT = Then

DebugPrint memory allcoation failed!

Exit Sub

End If

myNcbncb_buffer = pASTAT

bRet = Netbios(myNcb)

DebugPrint ErrLastDllError

CopyMemory myASTAT myNcbncb_buffer Len(myASTAT)

MsgBox Hex(myASTATadaptadapter_address()) & & _

Hex(myASTATadaptadapter_address()) _

& & Hex(myASTATadaptadapter_address()) & _

& Hex(myASTATadaptadapter_address()) _

& & Hex(myASTATadaptadapter_address()) & _

& Hex(myASTATadaptadapter_address())

HeapFree GetProcessHeap() pASTAT

End Sub

)按F运行该程序

)点击Command注意网卡地址将在一信息框中显示出来

上一篇:VB.NET中有用的通用对象列表

下一篇:了解VB.NET中的常量与枚举