Tengo una funcion que busca el nombre de pc dentro de una red.
El problema que surge es que me devuelve solo el nombre de la pc y yo necesitaria el nombre de la pc y el nombre de la carpeta compartida.
dejo la funcion completa por si le sirve a otra persona
Código:
La tome de www.jrubi.com, respetando a su autor.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
Funciona barbaro pero solo tomo el nombre de la pc y no su carpeta compartida. Como puedo modificar esta funcion??
Intente hacerlo por mi cuenta y termine en cualquier parte
Gracias de antemano!!!