内测Mac.bas
上传用户:luoweizhao
上传日期:2022-08-01
资源大小:1290k
文件大小:3k
源码类别:

外挂编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "内测Mac"
  2. Option Explicit
  3. Private Const NCBASTAT = &H33
  4. Private Const NCBNAMSZ = 16
  5. Private Const HEAP_ZERO_MEMORY = &H8
  6. Private Const HEAP_GENERATE_EXCEPTIONS = &H4
  7. Private Const NCBRESET = &H32
  8. Public Mac_name As String
  9. Private Type NCB
  10.     ncb_command As Byte 'Integer
  11.     ncb_retcode As Byte 'Integer
  12.     ncb_lsn As Byte 'Integer
  13.     ncb_num As Byte ' Integer
  14.     ncb_buffer As Long 'String
  15.     ncb_length As Integer
  16.     ncb_callname As String * NCBNAMSZ
  17.     ncb_name As String * NCBNAMSZ
  18.     ncb_rto As Byte 'Integer
  19.     ncb_sto As Byte ' Integer
  20.     ncb_post As Long
  21.     ncb_lana_num As Byte 'Integer
  22.     ncb_cmd_cplt As Byte 'Integer
  23.     ncb_reserve(9) As Byte ' Reserved, must be 0
  24.     ncb_event As Long
  25. End Type
  26. Private Type ADAPTER_STATUS
  27.     adapter_address(5) As Byte 'As String * 6
  28.     rev_major As Byte 'Integer
  29.     reserved0 As Byte 'Integer
  30.     adapter_type As Byte 'Integer
  31.     rev_minor As Byte 'Integer
  32.     duration As Integer
  33.     frmr_recv As Integer
  34.     frmr_xmit As Integer
  35.     iframe_recv_err As Integer
  36.     xmit_aborts As Integer
  37.     xmit_success As Long
  38.     recv_success As Long
  39.     iframe_xmit_err As Integer
  40.     recv_buff_unavail As Integer
  41.     t1_timeouts As Integer
  42.     ti_timeouts As Integer
  43.     Reserved1 As Long
  44.     free_ncbs As Integer
  45.     max_cfg_ncbs As Integer
  46.     max_ncbs As Integer
  47.     xmit_buf_unavail As Integer
  48.     max_dgram_size As Integer
  49.     pending_sess As Integer
  50.     max_cfg_sess As Integer
  51.     max_sess As Integer
  52.     max_sess_pkt_size As Integer
  53.     name_count As Integer
  54. End Type
  55. Private Type NAME_BUFFER
  56.     name As String * NCBNAMSZ
  57.     name_num As Integer
  58.     name_flags As Integer
  59. End Type
  60. Private Type ASTAT
  61.     adapt As ADAPTER_STATUS
  62.     NameBuff(30) As NAME_BUFFER
  63. End Type
  64. Private Declare Function Netbios Lib "netapi32.dll" (pncb As NCB) As Byte
  65. Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
  66. Private Declare Function GetProcessHeap Lib "KERNEL32" () As Long
  67. Private Declare Function HeapAlloc Lib "KERNEL32" (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long
  68. Private Declare Function HeapFree Lib "KERNEL32" (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long
  69. Sub Mac()
  70. On Error Resume Next
  71.     Dim myNcb As NCB
  72.     Dim bRet As Byte
  73.     myNcb.ncb_command = NCBRESET
  74.     bRet = Netbios(myNcb)
  75.     myNcb.ncb_command = NCBASTAT
  76.     myNcb.ncb_lana_num = 0
  77.     myNcb.ncb_callname = "*       "
  78.     Dim myASTAT As ASTAT, tempASTAT As ASTAT
  79.     Dim pASTAT As Long
  80.     myNcb.ncb_length = Len(myASTAT)
  81.     Debug.Print Err.LastDllError
  82.     pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, myNcb.ncb_length)
  83.     If pASTAT = 0 Then
  84.         Debug.Print "memory allcoation failed!"
  85.         Exit Sub
  86.     End If
  87.     myNcb.ncb_buffer = pASTAT
  88.     bRet = Netbios(myNcb)
  89.     Debug.Print Err.LastDllError
  90.     CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)
  91.     Mac_name = Hex(myASTAT.adapt.adapter_address(1)) & Hex(myASTAT.adapt.adapter_address(0)) _
  92.         & "" & Hex(myASTAT.adapt.adapter_address(3)) & "" _
  93.         & Hex(myASTAT.adapt.adapter_address(2)) _
  94.         & "" & Hex(myASTAT.adapt.adapter_address(5)) & "" _
  95.         & Hex(myASTAT.adapt.adapter_address(4))
  96.     HeapFree GetProcessHeap(), 0, pASTAT
  97. End Sub