VB获取网卡MAC地址源代码
10余年的秀英网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整秀英建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“秀英网站设计”,“秀英网站推广”以来,每个客户项目都认真落实执行。
具体代码:(其中GetMACAddress() 函数为楼主所需函数)
Option Explicit
Public CheckCode As Long
Private Const NCBASTAT As Long = H33
Private Const NCBNAMSZ As Integer = 16
Private Const HEAP_ZERO_MEMORY As Long = H8
Private Const HEAP_GENERATE_EXCEPTIONS As Long = H4
Private Const NCBRESET As Long = 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
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 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
Public Function GetMAC() As Integer
Dim bRet As Byte
Dim myNcb As NCB
Dim myASTAT As ASTAT
Dim pASTAT As Long
Dim intMAC As Integer
myNcb.ncb_command = NCBRESET
bRet = Netbios(myNcb)
With myNcb
.ncb_command = NCBASTAT
.ncb_lana_num = 0
.ncb_callname = "* "
.ncb_length = Len(myASTAT)
pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, .ncb_length)
End With
If pASTAT = 0 Then
Exit Function
End If
myNcb.ncb_buffer = pASTAT
bRet = Netbios(myNcb)
CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)
intMAC = myASTAT.adapt.adapter_address(0)
intMAC = intMAC + myASTAT.adapt.adapter_address(1)
intMAC = intMAC + myASTAT.adapt.adapter_address(2)
intMAC = intMAC + myASTAT.adapt.adapter_address(3)
intMAC = intMAC + myASTAT.adapt.adapter_address(4)
intMAC = intMAC + myASTAT.adapt.adapter_address(5)
GetMAC = intMAC
Call HeapFree(GetProcessHeap(), 0, pASTAT)
End Function
Public Function GetMACAddress() As String
Dim bRet As Byte
Dim myNcb As NCB
Dim myASTAT As ASTAT
Dim pASTAT As Long
myNcb.ncb_command = NCBRESET
bRet = Netbios(myNcb)
With myNcb
.ncb_command = NCBASTAT
.ncb_lana_num = 0
.ncb_callname = "* "
.ncb_length = Len(myASTAT)
pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, .ncb_length)
End With
If pASTAT = 0 Then
Exit Function
End If
myNcb.ncb_buffer = pASTAT
bRet = Netbios(myNcb)
CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)
GetMACAddress = HexEx(myASTAT.adapt.adapter_address(0)) "-" HexEx(myASTAT.adapt.adapter_address(1)) "-" HexEx(myASTAT.adapt.adapter_address(2)) "-" HexEx(myASTAT.adapt.adapter_address(3)) "-" HexEx(myASTAT.adapt.adapter_address(4)) "-" HexEx(myASTAT.adapt.adapter_address(5))
Call HeapFree(GetProcessHeap(), 0, pASTAT)
End Function
Private Function HexEx(ByVal B As Long) As String
Dim aa As String
aa = Hex$(B)
If Len(aa) 2 Then
aa = "0" aa
End If
HexEx = aa
End Function
C# 容易学,就算不懂算法,不懂数据结构都可以学...
我们学校的04年的512内存的老古董都可以运行... 你说还有哪些电脑不行呢 = =
1. .net是微软的语言架构,是面向对象的托管语言;VS是Visual Studio的缩写,是微软的集成开发环境,通过它可以设计,开发和调试微软平台的程序,其中包括.net,也包括不是.net的程序;VC是Visual C的缩写,是微软版本的C语言,用来开发桌面应用,不能做网站;VB.NET是.net中的一种语言,和原来的VB完全不同,可以用来开发桌面和网站,VB.net的开发环境是VS.net(目前最高版本是vs2008)。
2. 做网站的话,需要安装VS(建议VS2008,因为更加强大),如果用SQL Server的话需要安装SQL Server(建议SQL2008,因为性能更好)。
3. VS2005和VS2008大小差不多,完全安装4G左右,最小安装1G左右
4. 如果使用数据库建议用2008因为2000马上就要停止技术支持了。
模块
Public Function CheckComm()
On Error Resume Next
Set wshshell = CreateObject("wscript.shell")
wshshell.run ("%comspec% /c net start winmgmt"), 0
'用一个文本来记录硬件信息
'Set WshNetwork = CreateObject("WScript.Network")
'ComputerName = WshNetwork.ComputerName
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" strComputer "\root\cimv2")
'主板
Set board = objWMIService.ExecQuery("select * from win32_baseboard")
For Each item In board
board2 = "主板:" item.Product
Next
'CPU
Set cpu = objWMIService.ExecQuery("select * from win32_processor")
For Each item In cpu
cpu2 = "cpu:" item.Name
Next
'内存
Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory", , 48)
Dim memory1
For Each objItem In colItems
a = objItem.capacity / 1048576
temp = temp + Val(objItem.capacity)
If InStr(memory1, "1条" a "M") 0 Then
memory1 = Replace(memory1, "1条" a "M", "2条" a "M")
ElseIf InStr(memory1, "2条" a "M") 0 Then
memory1 = Replace(memory1, "2条" a "M", "3条" a "M")
ElseIf InStr(memory1, "3条" a "M") 0 Then
memory1 = Replace(memory1, "3条" a "M", "4条" a "M")
Else
memory1 = memory1 "1条" a "M"
End If
n = n + 1
Next
memory = temp / 1048576
If n = 1 Then
memory2 = "内存条:" memory1
Else
memory2 = "内存条:" memory1 " 总计" memory "M"
End If
'硬盘
Set disk = objWMIService.ExecQuery("select * from win32_diskdrive")
For Each item In disk
disk2 = "硬盘:" item.Model
Next
'显卡
Set video = objWMIService.ExecQuery("select * from win32_videocontroller", , 48)
For Each item In video
video2 = "显卡:" item.Description
Next
'网卡
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter", , 48)
For Each objItem In colItems
If (Left(objItem.NetConnectionID, 4) = "本地连接") Then
lanname = "网卡:" objItem.Name
End If
Next
lan2 = lanname
Dim thecomputer(6)
thecomputer(0) = board2
thecomputer(1) = cpu2
thecomputer(2) = memory2
thecomputer(3) = disk2
thecomputer(4) = video2
thecomputer(5) = lan2
CheckComm = thecomputer
End Function
代码
Private Sub Form_Load()
List4.Clear
List4.AddItem "Computer Info" ' vbCrLf
List4.AddItem "***********************" ' vbCrLf
Dim I As Integer, c
c = CheckComm
For I = 0 To 5
List4.AddItem c(I)
Next
Dim s, System, item, d() As String
Set System = GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")
For Each item In System 'List1.AddItem item.cputype
's = "Computer Info" vbCrLf
's = s "***********************" vbCrLf
s = s "计算机名称: " item.Name vbCrLf
s = s "状态: " item.Status vbCrLf
s = s "类型: " item.SystemType vbCrLf
s = s "生产厂家: " item.Manufacturer vbCrLf
s = s "型号: " item.Model vbCrLf
s = s "内存: ~" item.totalPhysicalMemory \ 1024000 "mb" vbCrLf
s = s "域: " item.domain vbCrLf
's = s "工作组" item.Workgroup vbCrLf '获得工作组和域的选项不能同时用
s = s "当前用户: " item.UserName vbCrLf
s = s "启动状态" item.BootupState vbCrLf
s = s "该计算机属于" item.PrimaryOwnerName vbCrLf
s = s "系统类型" item.CreationClassName vbCrLf
s = s "计算机类类型" item.Description vbCrLf
On Error GoTo 1
For I = 0 To 1 '这里假设安装了两个系统
s = s Chr(5) "启动选项" I " :" item.SystemStartupOptions(I) _
vbCrLf
Next I
1:
Next
d = Split(s, vbCrLf)
For I = 0 To UBound(d)
List4.AddItem d(I)
Next
End Sub
要求一个list4
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款