如何通过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_mand 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 netapi dll (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 myNcb ncb_mand = NCBRESET bRet = Netbios(myNcb) myNcb ncb_mand = NCBASTAT myNcb ncb_lana_num = 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 = 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( )) & & _ Hex(myASTAT adapt adapter_address( )) _ & & Hex(myASTAT adapt adapter_address( )) & _ & Hex(myASTAT adapt adapter_address( )) _ & & Hex(myASTAT adapt adapter_address( )) & _ & Hex(myASTAT adapt adapter_address( )) HeapFree GetProcessHeap() pASTAT End Sub
)按F 运行该程序
lishixinzhi/Article/program/net/201311/12061
2023-07-25 广告