教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> VB >> 编程技巧 >> 取得网卡序列号 RSS订阅
处理 SSI 文件时出错
取得网卡序列号
处理 SSI 文件时出错
   很多软件以取得网卡地址作为License验证,这不失为一个验证合法用户的好办法,不过要付出回复用户电话、传真的代价哦 ^_^ 
  将下面这段代码拷贝到程序中,然后在你的程序需要的时候调用EthernetAddress(0),该函数返回的字符串就是您机器上网卡的以太序列号。 

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 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 

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

来源:编程技术-十度教育
作者:
关键字:取得网卡序列号
发表日期:2006-10-18 13:46:33

处理 SSI 文件时出错

上一篇:用VB制作浏览器   下一篇:强制和防止窗口重画


2008-9-7 2:14:56
本文的相类似文章
在学习中进步 在进步中成长 教程中国相随您的成长之路
华腾联合科技股份有限公司版权所有
广告联系:Rosibo@163.com