熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

如何通過VB.NET獲取網卡地址

2013-11-13 09:56:33  來源: .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注意網卡地址將在一信息框中顯示出來


From:http://tw.wingwit.com/Article/program/net/201311/12061.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.