乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 41|回复: 3

在XP或WIN2000中怎样用VB得到计算机的网卡号

[复制链接]

10

主题

32

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2007-8-2 21:13:00 | 显示全部楼层 |阅读模式
求救:
在XP或WIN2000中怎样用VB得到计算机的网卡号?以前我有一段代码在W98中好使,但在XP或Win2000中运行时,网卡号总是由0组成的,这是为什么?请高手赐教
回复

使用道具 举报

15

主题

52

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2007-8-8 12:44:00 | 显示全部楼层
关注中,想在VBA中实现——
回复

使用道具 举报

11

主题

36

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2007-8-24 12:36:00 | 显示全部楼层
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
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
     
     Form1.Text1.Text = (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))
Dim pangduan As String
     pangduan = "0 17 31 B5 AF C"
'If Form2.Text1(0).Text = pangduan Then
    ' Form2.Command1.Enabled = True
'Else
   ' MsgBox "对不起,您的网卡地址有误,请重新获取或检查网络配置"
'End If
End Sub
回复

使用道具 举报

10

主题

32

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2007-8-26 16:16:00 | 显示全部楼层
我试了以上代码,但显示的是"0 0 0 0 0 0",我的机子XP系统,请赐教.多谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 11:08 , Processed in 1.165569 second(s), 61 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表