|
|
|
|
|
Dicas
|
|
Visual Basic (Internet)
|
|
|
Título da Dica: RETORNAR ENDEREÇO DE UMA MÁQUINA REMOTA
|
|
|
|
Postada em 5/4/2006 por JOHNNY
talk2cod@hotmail.com
FAÇA DOIS TEXTBOX E UM COMMMANDBUTTON.
Option Explicit
Private Const NO_ERROR = 0
Private Declare Function inet_addr Lib "wsock32.dll" _ (ByVal s As String) As Long
Private Declare Function SendARP Lib "iphlpapi.dll" _ (ByVal DestIP As Long, _ ByVal SrcIP As Long, _ pMacAddr As Long, _ PhyAddrLen As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" _ (dst As Any, _ src As Any, _ ByVal bcount As Long)
Private Sub Form_Load()
Text1.Text = "192.168.1.101" Text2.Text = "" Command1.Caption = "RETORNAR ENDEREÇO DE MÁQUINA REMOTA" End Sub
Private Sub Command1_Click()
Dim sRemoteMacAddress As String If Len(Text1.Text) > 0 Then If GetRemoteMACAddress(Text1.Text, sRemoteMacAddress) Then Text2.Text = sRemoteMacAddress Else Text2.Text = "(SendARP call failed)" End If End If
End Sub
Private Function GetRemoteMACAddress(ByVal sRemoteIP As String, _ sRemoteMacAddress As String) As Boolean
Dim dwRemoteIP As Long Dim pMacAddr As Long Dim bpMacAddr() As Byte Dim PhyAddrLen As Long Dim cnt As Long Dim tmp As String dwRemoteIP = inet_addr(sRemoteIP) If dwRemoteIP <> 0 Then PhyAddrLen = 6 If SendARP(dwRemoteIP, 0&, pMacAddr, PhyAddrLen) = NO_ERROR Then If pMacAddr <> 0 And PhyAddrLen <> 0 Then ReDim bpMacAddr(0 To PhyAddrLen - 1) CopyMemory bpMacAddr(0), pMacAddr, ByVal PhyAddrLen For cnt = 0 To PhyAddrLen - 1 If bpMacAddr(cnt) = 0 Then tmp = tmp & "00-" Else tmp = tmp & Hex$(bpMacAddr(cnt)) & "-" End If Next If Len(tmp) > 0 Then sRemoteMacAddress = Left$(tmp, Len(tmp) - 1) GetRemoteMACAddress = True End If
Exit Function Else GetRemoteMACAddress = False End If Else GetRemoteMACAddress = False End If Else GetRemoteMACAddress = False End If End Function
|
|
|
|
|