Ver usuarios de una red local
Hola a tod@s:
Estoy empezando con esto del vb y me he puesto con el t铆pico programilla para mandar mensajes en red.
Lo de enviar el mensaje lo tengo resuelto, pero ahora tengo que escribir yo a qui茅n se lo quiero enviar.
Querr铆a saber c贸mo puedo hacer para que me salga un listbox con los nombres de los equipos que est谩n conectados a mi red en ese momento, de manera que en vez de escribir el nombre, solo tenga que selecionarlo de la lista.
Creo que puedo hacer algo como:
dim msn as string
msn = "net view"
shell msn
pero claro, de 茅ste modo no s茅 c贸mo recoger la informaci贸n que genera esta instrucci贸n...
A ver si me podeis echar una mano
y muchas gracias de antemano
Estoy empezando con esto del vb y me he puesto con el t铆pico programilla para mandar mensajes en red.
Lo de enviar el mensaje lo tengo resuelto, pero ahora tengo que escribir yo a qui茅n se lo quiero enviar.
Querr铆a saber c贸mo puedo hacer para que me salga un listbox con los nombres de los equipos que est谩n conectados a mi red en ese momento, de manera que en vez de escribir el nombre, solo tenga que selecionarlo de la lista.
Creo que puedo hacer algo como:
dim msn as string
msn = "net view"
shell msn
pero claro, de 茅ste modo no s茅 c贸mo recoger la informaci贸n que genera esta instrucci贸n...
A ver si me podeis echar una mano
y muchas gracias de antemano
revisa esto, tal vez de aqui puedes sacar lo que necesitas:
Podemos usar la funci贸n del API SHBrowseForFolder para selecionar uno de los ordenadores conectados a nuestra red.
Primero declaramos :
Private Const ERROR_SUCCESS As Long = 0
Private Const MAX_PATH As Long = 260
Private Const CSIDL_NETWORK As Long = &H12
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Type BROWSEINFO 'BI
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long
Private Declare Function SHGetSpecialFolderLocation _
Lib "shell32.dll" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
pidl As Long) As Long
Emplearemos esta funci贸n auxiliar para tratar las cadenas devueltas por el API :
Function AsciiZ(texto As String) As String
'esta funci贸n se utiliza para devolver la parte del string
'hasta el primer chr(0). Las funciones del API suelen emplear
'un chr(0) para marcar el final de las cadenas de texto
Dim i As Long
i = InStr(texto, Chr(0))
If i = 0 Then
AsciiZ = texto
Else
AsciiZ = Left(texto, i - 1)
End If
End Function
Y luego esta funci贸n nos devolver谩 un nombre de m谩quina en notaci贸n UNC (\NombreOrdenador) :
Private Function BrowseForComputers() As String
'muestra s贸lo ordenadores
Dim BI As BROWSEINFO
Dim pidl As Long
Dim sPath As String
Dim pos As Integer
'obtener el pidl de la carpeta 'Entorno de red'
If SHGetSpecialFolderLocation(Me.hWnd, CSIDL_NETWORK, pidl) = ERROR_SUCCESS Then
'rellenar la estructura limitando a ordenadores especificando
'el pidl devuelto como pidl ra铆z
With BI
.hOwner = Me.hWnd
.pidlRoot = pidl
.pszDisplayName = Space$(MAX_PATH)
.lpszTitle = "Seleccione un ordenador :"
.ulFlags = BIF_BROWSEFORCOMPUTER
End With
'mostrar el di谩logo de b煤squeda.
If SHBrowseForFolder(BI) <> 0 Then
'se ha seleccionado un ordenador.
BrowseForComputers = "\" & AsciiZ(BI.pszDisplayName)
End If
End If
End Function
Podemos usar la funci贸n del API SHBrowseForFolder para selecionar uno de los ordenadores conectados a nuestra red.
Primero declaramos :
Private Const ERROR_SUCCESS As Long = 0
Private Const MAX_PATH As Long = 260
Private Const CSIDL_NETWORK As Long = &H12
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Type BROWSEINFO 'BI
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long
Private Declare Function SHGetSpecialFolderLocation _
Lib "shell32.dll" _
(ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
pidl As Long) As Long
Emplearemos esta funci贸n auxiliar para tratar las cadenas devueltas por el API :
Function AsciiZ(texto As String) As String
'esta funci贸n se utiliza para devolver la parte del string
'hasta el primer chr(0). Las funciones del API suelen emplear
'un chr(0) para marcar el final de las cadenas de texto
Dim i As Long
i = InStr(texto, Chr(0))
If i = 0 Then
AsciiZ = texto
Else
AsciiZ = Left(texto, i - 1)
End If
End Function
Y luego esta funci贸n nos devolver谩 un nombre de m谩quina en notaci贸n UNC (\NombreOrdenador) :
Private Function BrowseForComputers() As String
'muestra s贸lo ordenadores
Dim BI As BROWSEINFO
Dim pidl As Long
Dim sPath As String
Dim pos As Integer
'obtener el pidl de la carpeta 'Entorno de red'
If SHGetSpecialFolderLocation(Me.hWnd, CSIDL_NETWORK, pidl) = ERROR_SUCCESS Then
'rellenar la estructura limitando a ordenadores especificando
'el pidl devuelto como pidl ra铆z
With BI
.hOwner = Me.hWnd
.pidlRoot = pidl
.pszDisplayName = Space$(MAX_PATH)
.lpszTitle = "Seleccione un ordenador :"
.ulFlags = BIF_BROWSEFORCOMPUTER
End With
'mostrar el di谩logo de b煤squeda.
If SHBrowseForFolder(BI) <> 0 Then
'se ha seleccionado un ordenador.
BrowseForComputers = "\" & AsciiZ(BI.pszDisplayName)
End If
End If
End Function
