是个好办法,但是有网卡的话,返回的是网卡的ip,不是modem 的,我没有说清楚情况。
有办法吗?

解决方案 »

  1.   

    读出网卡号码     关键字:网卡      人气值: 
    291 文档分类:
    Visual Basic 贴文时间
    2001-6-3 17:21:34 得票数: 
    25 给贴子投票 
    投票   作者:shawls
     出处:     Option ExplicitPrivate 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 LongPrivate 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 FunctionPrivate Sub Command1_Click()
        Me.Caption = EthernetAddress(0)
        MsgBox "NetCard Number:" + (Chr(13)) + EthernetAddress(0)
    End Sub对该文的评论  我要评论    评论人:shawls   评论:
      
          
         
     
               
    美达美简介 广告服务 英语步步高 程序员大本营 百联美达美科技有限公司  版权所有 
     
      

  2.   

    我上次查了一下,CSDN网站上已经发表了很多次类似的帖子,可以点击“搜索”,然后填写“IP”查一下。