Visual Basic - por fa ayudenmeeee?

Life is soft - evento anual de software empresarial
 
Vista:

por fa ayudenmeeee?

Publicado por yeni (146 intervenciones) el 04/07/2005 20:12:04
por fa quiero el codigo no k me mencionen como hacerlo... por fa no sean malitos ...besos nenes

Necesito una Ayuda.. quisiera saber como hago para poder obtener un listado con el nombre de todas las computadoras que se encuentran en una red.

EJM:

Si hubiera 3 Pc's en una red y estan con el nombre de:
PC1
PC2
PC3

entonces lo k quiero hacer es k esos tres nombres aparescan en un listado..

por fa-..... se qeu esto se puede por k .. yo ya lo habia visto pero mi cerebro esta algo perturbado estos dias.. por fa Ayudenmeeeeeeeeee

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:por fa ayudenmeeee?

Publicado por SuNcO (599 intervenciones) el 04/07/2005 21:06:05
Este codigo es algo como lo tenia pensado

http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=55836&lngWId=1

Checalo.. como yo no tengo pc's en red no puedo saber si funciona exactamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por fa ayudenmeeee?

Publicado por yeni (146 intervenciones) el 04/07/2005 21:14:19
sunco .. baje el archivo k me dijiste .. pero sale un error en la linea del shell:
esta es la linea: Shell "cmd /c net view >C:\comName.txt", vbHide

y me dice k no se encontro el archivo...
por fa ayudame
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 14
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:por fa ayudenmeeee?

Publicado por SuNcO (599 intervenciones) el 04/07/2005 21:24:44
Que raro.. ese codigo solo ejecuta el comando "net view" y separa los nombres de las maquinas.. aun asi.. El codigo que pides NO es algo facil, pero aqui encontre otro que revisa los adaptadores de red, los grupos de servidores y las maquinas en red

Ocupa un boton y un listbox.. si este codigo te interesa entonces sabes algo de VB y lo unico que hay que hacer es separar algo de codigo para que solo muestre las maquinas en red

' Estructura con datos de un recurso de red
Private Type NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As Long
lpRemoteName As Long
lpComment As Long
lpProvider As Long
End Type

' Funciones para abrir una enumeración de esos recursos
Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias _
"WNetOpenEnumA" ( _
ByVal dwScope As Long, _
ByVal dwType As Long, _
ByVal dwUsage As Long, _
lpNetResource As Any, _
lphEnum As Long) As Long

' recorrer la enumeración
Private Declare Function WNetEnumResource Lib "mpr.dll" Alias _
"WNetEnumResourceA" ( _
ByVal hEnum As Long, _
lpcCount As Long, _
ByVal lpBuffer As Long, _
lpBufferSize As Long) As Long

' y cerrarla
Private Declare Function WNetCloseEnum Lib "mpr.dll" ( _
ByVal hEnum As Long) As Long

' Constantes necesarias para utilizar las funciones anteriores
Private Const RESOURCE_CONNECTED = &H1
Private Const RESOURCE_GLOBALNET = &H2
Private Const RESOURCE_REMEMBERED = &H3

Private Const RESOURCETYPE_ANY = &H0
Private Const RESOURCETYPE_DISK = &H1
Private Const RESOURCETYPE_PRINT = &H2
Private Const RESOURCETYPE_UNKNOWN = &HFFFF

Private Const RESOURCEUSAGE_CONNECTABLE = &H1
Private Const RESOURCEUSAGE_CONTAINER = &H2
Private Const RESOURCEUSAGE_RESERVED = &H80000000

Private Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
Private Const RESOURCEDISPLAYTYPE_SERVER = &H2
Private Const RESOURCEDISPLAYTYPE_SHARE = &H3

' Funciones para asignar y liberar bloques de memoria
Private Declare Function GlobalAlloc Lib "KERNEL32" ( _
ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "KERNEL32" ( _
ByVal hMem As Long) As Long

' constante para las funciones anteriores
Private Const GPTR = &H40

' Funciones que nos permiten copiar datos usando punteros
Private Declare Sub RtlMoveMemory Lib "KERNEL32" _
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function strcpy Lib "KERNEL32" _
Alias "lstrcpyA" ( _
ByVal NewString As String, ByVal OldString As Long) As Long

' Al pulsarse el botón dispuesto en el formulario
Private Sub Command1_Click()
Enumera 0 ' iniciamos la enumeración con un nulo
End Sub

' Esta función recursiva se encarga de enumerar los recursos
' Recibe como parámetro un puntero a la estructura NETRESOURCE
' que marca el inicio de la enumeración. Si dicho puntero es
' nulo se comienza desde el origen de la red de Windows
Private Sub Enumera(ByVal NR As Long)
Dim lEnum As Long
Dim Datos As Long, lDatos As Long, nDatos As Long

lDatos = 2048 ' Un bloque de 2Kbytes
nDatos = -1 ' para enumerar todos los recursos

' iniciamos la enumeración de cualquier tipo de recurso
If WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, ByVal NR, lEnum) = 0 Then
' asignamos el bloque de memoria global
Datos = GlobalAlloc(GPTR, lDatos)
' y obtenemos los datos de la enumeración
If WNetEnumResource(lEnum, nDatos, Datos, _
lDatos) = 0 Then
Dim pDato As Long, Indice As Integer
Dim nrObtenido As NETRESOURCE
Dim Cadena As String * 260

' pDato nos permitirá ir recorriendo los datos obtenidos
pDato = Datos
For Indice = 1 To nDatos ' bucle para recorrerlos
' copiamos una de la estructuras a la variable nrObtenido
RtlMoveMemory nrObtenido, ByVal pDato, _
LenB(nrObtenido)
' y avanzamos a la siguiente
pDato = pDato + LenB(nrObtenido)

' obtenemos el nombre del recurso
strcpy Cadena, nrObtenido.lpRemoteName
' según su tipo lo precedemos con una cadena
Select Case nrObtenido.dwDisplayType
Case RESOURCEDISPLAYTYPE_DOMAIN
Cadena = "Dominio : " & Cadena
Case RESOURCEDISPLAYTYPE_SERVER
Cadena = "Servidor : " & Cadena
Case RESOURCEDISPLAYTYPE_SHARE
Cadena = "Recurso : " & Cadena
End Select
' añadimos el recurso a la lista
list1.AddItem Left(Cadena, InStr(Cadena, Chr(0)) - 1)

' si el recurso es un contenedor
If (nrObtenido.dwUsage And _
RESOURCEUSAGE_CONTAINER) <> 0 Then
' lo enumeramos
Enumera VarPtr(nrObtenido)
End If
Next
End If
End If
If Datos <> 0 Then
GlobalFree Datos ' liberamos el bloque de memoria
End If
WNetCloseEnum lEnum ' y cerramos la enumeración
End Sub

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar