分享
 
 
 

在ASP中用组件检测当前网卡地址

王朝asp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

* written by Jaron ,2003-11-21 */

/* 原出处:CSDN文档中心 http://www.csdn.net/develop WEB技术中文网 http://www.jaron.cn */

/* 转载请注明出处和保留此版权信息 */

/* 欢迎使用SiteManager-CMS Server 网站管理系统 http://sitemanager.cnzone.net */

/* 检测MAC的组件(ActiveX DLL)源代码

/* 在ASP中,通过自写组件的方式获取服务器当前的网卡地址

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 '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(9) As Byte ' Reserved, must be 0

ncb_event As Long

End Type

Private Type ADAPTER_STATUS

adapter_address(5) As Byte 'As String * 6

rev_major As Byte 'Integer

reserved0 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

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 GetMACAddress(sIP As String) As String

Dim sRtn As String

Dim myNcb As NCB

Dim bRet As Byte

Dim aIP() As String

Dim x As Long

Dim nIP As String

If InStr(sIP, ".") = 0 Then

GetMACAddress = "无效的IP地址."

Exit Function

End If

aIP = Split(sIP, ".", -1, vbTextCompare)

If UBound(aIP()) <> 3 Then

GetMACAddress = "无效的IP地址."

Exit Function

End If

For x = 0 To UBound(aIP())

If Len(aIP(x)) > 3 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If IsNumeric(aIP(x)) = False Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If InStr(aIP(x), ",") <> 0 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If CLng(aIP(x)) > 255 Then

GetMACAddress = "无效的IP地址"

Exit Function

End If

If nIP = "" Then

nIP = String(3 - Len(aIP(x)), "0") & aIP(x)

Else

nIP = nIP & "." & String(3 - Len(aIP(x)), "0") & aIP(x)

End If

Next

sRtn = ""

myNcb.ncb_command = NCBRESET

bRet = Netbios(myNcb)

myNcb.ncb_command = NCBASTAT

myNcb.ncb_lana_num = 0

myNcb.ncb_callname = nIP & Chr(0)

Dim myASTAT As ASTAT, tempASTAT As ASTAT

Dim pASTAT As Long

myNcb.ncb_length = Len(myASTAT)

pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, myNcb.ncb_length)

If pASTAT = 0 Then

GetMACAddress = "memory allcoation failed!"

Exit Function

End If

myNcb.ncb_buffer = pASTAT

bRet = Netbios(myNcb)

If bRet <> 0 Then

GetMACAddress = "不能从当前IP地址获得MAC,当前IP地址: " & sIP

Exit Function

End If

CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)

Dim sTemp As String

Dim i As Long

For i = 0 To 5

sTemp = Hex(myASTAT.adapt.adapter_address(i))

If i = 0 Then

sRtn = IIf(Len(sTemp) < 2, "0" & sTemp, sTemp)

Else

sRtn = sRtn & Space(1) & IIf(Len(sTemp) < 2, "0" & sTemp, sTemp)

End If

Next

HeapFree GetProcessHeap(), 0, pASTAT

&

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有