上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
如何通过VB获取网卡地址
作者:未知 申领版权
2010年11月15日 共有 884 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    
    步骤:
    1)在Visual Basic生成标准的EXE文件。缺省创建 Form1。
    2)在Form1中添加一命令按钮,缺省名为Command1。
    3)把下列代码放到Form1中说明部分。
    
    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
    
    
    
    把下面的代码放入Command1_Click的事件中:
    
    
    
    Private Sub Command1_Click()
    
    Dim myNcb As NCB
    
    Dim bRet As Byte
    
    myNcb.ncb_command = NCBRESET
    
    bRet = Netbios(myNcb)
    
    myNcb.ncb_command = NCBASTAT
    
    myNcb.ncb_lana_num = 0
    
    myNcb.ncb_callname = "*             "
    
    Dim myASTAT As ASTAT, tempASTAT As ASTAT
    
    Dim pASTAT As Long
    
    myNcb.ncb_length = Len(myASTAT)
    
    Debug.Print Err.LastDllError
    
    pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS _
    
    Or HEAP_ZERO_MEMORY, myNcb.ncb_length)
    
    If pASTAT = 0 Then
    
    Debug.Print "memory allcoation failed!"
    
    Exit Sub
    
    End If
    
    myNcb.ncb_buffer = pASTAT
    
    bRet = Netbios(myNcb)
    
    Debug.Print Err.LastDllError
    
    CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)
    
    MsgBox Hex(myASTAT.adapt.adapter_address(0)) & " " & _
    
    Hex(myASTAT.adapt.adapter_address(1)) _
    
    & " " & Hex(myASTAT.adapt.adapter_address(2)) & " " _
    
    & Hex(myASTAT.adapt.adapter_address(3)) _
    
    & " " & Hex(myASTAT.adapt.adapter_address(4)) & " " _
    
    & Hex(myASTAT.adapt.adapter_address(5))
    
    HeapFree GetProcessHeap(), 0, pASTAT
    
    End Sub
    
    4)按F5,运行该程序。
    
    5)点击Command1。注意,网卡地址将在一信息框中显示出来。 
    

    

 

相关新闻

您可能对这些感兴趣  

用VB做定时断线程序
VisualBasic中的界面设计原则和编程技巧
VB6.0与Windows API 间的呼叫技巧
制作可以自动隐藏的弹出式菜单
ListBox中的字符串超长显示的解决方法
VB中的Unicode 和 Ansi 格式
优化程序显示速度
Visual Basic 产生渐层的 Form 背景
用VB实现客户——服务器(TCP/IP)
用VB制作注册软件的方法

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》