Keyo
|
CURITIBA PR - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/12/2005 11:44 hs
Olá Galera tudo beleza? Uns tempos atrá parece que vi aqui no fórum uma rotina para listar todas as máquinas conectadas numa rede Windows,será que alguem poderia me passar o código. Estou precisando muito dessa ajuda. Desde já obrigado!!!!
|
|
|
|
Keyo
|
CURITIBA PR - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 08/12/2005 07:51 hs
Galera arrumei uma classe que faz o que eu quero,se alguem quiser me manda um e-mail que eu repasso.......t+
|
|
|
Paula
|
BRASÍLIA DF - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 08/12/2005 15:37 hs
Vc pode me enviar?? Agradeço desde já!!
|
|
|
Keyo
|
CURITIBA PR - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 08/12/2005 15:55 hs
Me da um tempinho pra mim fazer uma aplicaçãozinha de exemplo pra te enviar,porque só com o codigo vc vai demorar mais pra entender o funcionamento da classe,amanha cedo te envio...
|
|
|
Geronimo
|
JOINVILLE SC - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 08/12/2005 16:12 hs
Não sei a classe seria esta mais segue codigo : Vc já tem um código que te retorna os nomes das máquinas, a classe abaixo resolve o nome da máquina e retorna o IP ou o contrário.
Para testar desenhe 1 textbox, 1 label e um commandbutton num form vazio e cole o seguinte código:
Dim DNS As New clsIPHostResolver
Private Sub Command1_Click()
Label1 = DNS.NameToAddress(Text1)
End Sub
Crie um class module e renomeie para clsIPHostResolver e cole nele o código abaixo:
Option Explicit
Private mbInitialized As Boolean
Const WSADescription_Len = 256 Const WSASYS_Status_Len = 128
Const AF_INET = 4&
Private Type HOSTENT hName As Long hAliases As Long hAddrType As Integer hLength As Integer hAddrList As Long End Type
Private Type WSADATA wversion As Integer wHighVersion As Integer szDescription(0 To WSADescription_Len) As Byte szSystemStatus(0 To WSASYS_Status_Len) As Byte iMaxSockets As Integer iMaxUdpDg As Integer lpszVendorInfo As Long End Type
Private Declare Function WSAStartup Lib "wsock32" (ByVal VersionReq As Long, WSADataReturn As WSADATA) As Long
Private Declare Function WSACleanup Lib "wsock32" () As Long
Private Declare Function WSAGetMaxError Lib "wsock32" () As Long
Private Declare Function gethostbyaddr Lib "wsock32" (addr As Long, addrLen As Long, addrType As Long) As Long
Private Declare Function gethostbyname Lib "wsock32" (ByVal hostname As String) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
'checks if string is valid IP address Private Function CheckIP(IPToCheck As String) As Boolean
Dim TempValues Dim iLoop As Long Dim TempByte As Byte On Error GoTo CheckIPError TempValues = Split(IPToCheck, ".") If UBound(TempValues) < 3 Then Exit Function End If For iLoop = LBound(TempValues) To UBound(TempValues) TempByte = TempValues(iLoop) Next iLoop CheckIP = True CheckIPError:
End Function
'converts IP address from string to sin_addr Private Function MakeIP(strIP As String) As Long
Dim vTemp Dim lngTemp As Long Dim iLoop As Long On Error GoTo MakeIPError vTemp = Split(strIP, ".") For iLoop = 0 To (UBound(vTemp) - 1) lngTemp = lngTemp + (vTemp(iLoop) * (256 ^ iLoop)) Next iLoop If vTemp(UBound(vTemp)) < 128 Then lngTemp = lngTemp + (vTemp(UBound(vTemp)) * (256 ^ 3)) Else lngTemp = lngTemp + ((vTemp(UBound(vTemp)) - 256) * (256 ^ 3)) End If MakeIP = lngTemp MakeIPError: End Function
'resolves IP address to host name Private Function AddrToName(strAddr As String) As String
Dim heEntry As HOSTENT Dim strHost As String * 255 Dim strTemp As String Dim lngRet As Long Dim lngIP As Long On Error GoTo AddrToNameError If CheckIP(strAddr) Then lngIP = MakeIP(strAddr) lngRet = gethostbyaddr(lngIP, 4, AF_INET) If lngRet = 0 Then Exit Function End If RtlMoveMemory heEntry, lngRet, Len(heEntry) RtlMoveMemory ByVal strHost, heEntry.hName, 255 strTemp = TrimNull(strHost) AddrToName = strTemp End If
AddrToNameError: End Function 'resolves host name to IP address Private Function NameToAddr(ByVal strHost As String)
Dim ip_list() As Byte Dim heEntry As HOSTENT Dim strIPAddr As String Dim lp_HostEnt As Long Dim lp_HostIP As Long Dim iLoop As Integer On Error GoTo NameToAddrError lp_HostEnt = gethostbyname(strHost) If lp_HostEnt = 0 Then Exit Function End If RtlMoveMemory heEntry, lp_HostEnt, LenB(heEntry) RtlMoveMemory lp_HostIP, heEntry.hAddrList, 4 ReDim ip_list(1 To heEntry.hLength) RtlMoveMemory ip_list(1), lp_HostIP, heEntry.hLength For iLoop = 1 To heEntry.hLength strIPAddr = strIPAddr & ip_list(iLoop) & "." Next strIPAddr = Mid(strIPAddr, 1, Len(strIPAddr) - 1) NameToAddr = strIPAddr NameToAddrError:
End Function Public Function AddressToName(strIP As String) As String
If mbInitialized Then AddressToName = AddrToName(strIP) End If
End Function
Public Function NameToAddress(strName As String) As String
If mbInitialized Then NameToAddress = NameToAddr(strName) End If
End Function
Private Function TrimNull(sTrim As String) As String
Dim iFind As Long
iFind = InStr(1, sTrim, Chr(0)) If iFind > 0 Then TrimNull = Left(sTrim, iFind - 1) Else TrimNull = sTrim End If
End Function
Private Sub Class_Initialize()
Dim wsa As WSADATA mbInitialized = (WSAStartup(257, wsa) = 0) End Sub
Private Sub Class_Terminate()
If mbInitialized Then WSACleanup End If
End Sub
"O pior inimigo que você poderá encontrar será sempre você mesmo."
|
|
|
Keyo
|
CURITIBA PR - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 09/12/2005 07:06 hs
Naum é isso Gerônimo,o que esta classe faz e buscar todos os computadores da rede e listar num grid sem saber ip nem nome das maquinas ela simplesmente faz uma busca na rede e te retorna todo mundo que tiver conectado...
|
|
|
|