讀出網路卡號碼 (轉)
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
ncb_retcode As Byte
ncb_lsn As Byte
ncb_num As Byte
ncb_buffer As Long
ncb_length As Integer
ncb_callname As String * NCBNAMSZ
ncb_name As String * NCBNAMSZ
ncb_rto As Byte
ncb_sto As Byte
ncb_post As Long
ncb_lana_num As Byte
ncb_cmd_cplt As Byte
ncb_reserve(9) As Byte ' Reserved, must be 0
ncb_event As Long
End Type
Private Type ADAPTER_STATUS
adapter_address(5) As Byte
rev_major As Byte
reserved0 As Byte
adapter_type As Byte
rev_minor As Byte
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 Lib32.dll" (pncb As NCB) As Byte
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpv 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
Private Function EthernetAddress(LanaNumber As Long) As String
Dim udtNCB As NCB
Dim bytResponse As Byte
Dim udtASTAT As ASTAT
Dim udtTempASTAT As ASTAT
Dim lngASTAT As Long
Dim strOut As String
Dim x As Integer
udtNCB.ncb_command = NCBRESET
bytResponse = Netbios(udtNCB)
udtNCB.ncb_command = NCBASTAT
udtNCB.ncb_lana_num = LanaNumber
udtNCB.ncb_callname = "* "
udtNCB.ncb_length = Len(udtASTAT)
lngASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, udtNCB.ncb_length)
strOut = ""
If lngASTAT Then
udtNCB.ncb_buffer = lngASTAT
bytResponse = Netbios(udtNCB)
CopyMemory udtASTAT, udtNCB.ncb_buffer, Len(udtASTAT)
With udtASTAT.adapt
For x = 0 To 5
strOut = strOut & Right$("00" & Hex$(.adapter_address(x)), 2)
Next x
End With
HeapFree GetProcessHeap(), 0, lngASTAT
End If
EthernetAddress = strOut
End Function
Private Sub Command1_Click()
Me.Caption = EthernetAddress(0)
MsgBox "NetCard Number:" + (Chr(13)) + EthernetAddress(0)
End Sub
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1007113/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 取得網路卡序列號 (轉)
- linux檢視網路卡型號Linux
- 網路卡-國家碼
- (轉)Ubuntu網路卡基本配置Ubuntu
- 【轉】redhat 雙網路卡繫結Redhat
- 雙網路卡單IP(轉貼)
- 揭秘:哪種物聯網路卡訊號好網速快?
- Oracle 11gR2 RAC 單網路卡轉雙網路卡繫結配置Oracle
- ASP.NET獲取CPU序列號,硬碟序列號ID,獲取網路卡編號ASP.NET硬碟
- 安裝配置Linux網路卡(轉)Linux
- linux下網路卡bonding[轉]Linux
- 解析度、卷標、序列號、分割槽表的讀出 (轉)
- [轉]讀取webBrowser中網頁程式碼Web網頁
- 教你用vbs指令碼獲取網路卡MAC,CPUID,硬碟序列號的實現程式碼指令碼MacUI硬碟
- 網路卡自動啟動指令碼指令碼
- 查詢手機號碼是否支援攜號轉網的API介面API
- 獲取網路卡MAC、硬碟序列號、CPU ID、BIOS編號(1) - 硬碟序列號 - 技術應用 - 豆豆網Mac硬碟iOS
- 網路號、主機號、子網號、子網掩碼、子網劃分
- 啟停無線網路卡bat指令碼BAT指令碼
- centos6 修改網路卡名指令碼CentOS指令碼
- Killer E3000網路卡釋出:首個支援2.5G乙太網的千兆網路卡
- [求助] 升級核心後網路卡不工作(轉)
- 在Debian中網路卡的設定(轉)
- windows10系統下檢視網路卡型號的方法Windows
- AIX 網路卡AI
- 撥號上網程式 (轉)
- 千兆網路卡與萬兆網路卡的區別在哪?
- CentOS 5.4上雙網路卡(多網路卡)繫結CentOS
- 對網路卡中斷繫結的指令碼指令碼
- linux_監控網路卡流量指令碼Linux指令碼
- winform C# 獲取區分物理網路卡、虛擬網路卡及無線網路卡ORMC#
- [轉]AIX 5L網路卡管理與配置AI
- AIX中為單網路卡配置多IP地址(轉)AI
- 怎樣驅動音效卡和網路卡?(轉)
- CPU明明8個核,網路卡為啥拼命折騰一號核?
- Linux網路程式碼導讀v0.2 (轉)Linux
- 新品釋出:聯瑞推出雙埠萬兆Bypass網路卡
- 用iptables實現單網路卡做閘道器上網(轉)