Newsgroup: it.comp.lang.visual-basic
Titolo: Risorse di rete

Qualcuno sa dirmi dove posso trovare o come si può implementare una funzione
che faccia vedere tutti i pc che sono nella tua rete.
Grazie

...


 che faccia vedere tutti i pc che sono nella tua rete.
Questo č un esempio che avevo postato tempo fa.
Tieni presente che funziona solo in NT, dato che la libreria
Netapi32.dll non č utilizzabile in Win9x. Dovresti usare
Netapi.dll programmando a 16 bit.
La funzione WNetEnumResource che ti č stata indicata serve
per elencare le risorse condivise, previa apertura della enumerazione
tramite WNetOpenEnum.
---------------------------------------------------------------
' Costanti per i tipi di computer
' Esistono molte altre definizioni
Private Const SV_TYPE_WORKSTATION = &H1&
Private Const SV_TYPE_SERVER = &H2&
Private Const SV_TYPE_DOMAIN_CTRL = &H8&
Private Const SV_TYPE_NT = &H1000&
Private Const SV_TYPE_SERVER_NT = &H8000&
Private Const SV_TYPE_WINDOWS = &H400000
Private Const SV_TYPE_ALL = &HFFFF
' Custom Type usato da NetServerEnum
Private Type SERVER_INFO_101
   wki101_platform_id As Long
   wki101_servername As Long
   wki101_langroup As Long
   wki101_ver_major As Long
   wki101_ver_minor As Long
   wki101_lanroot As Long
End Type
Private Declare Function NetServerEnum Lib "Netapi32" _
      (ByVal sServerName As String, _
       ByVal lLevel As Long, _
       vBuffer As Long, _
       lPreferedMaxLen As Long, _
       lEntriesRead As Long, _
       lTotalEntries As Long, _
       ByVal vServerType As Long, _
       ByVal sDomain As String, _
       vResume As Long) As Long
Private Declare Function NetApiBufferFree _
      Lib "Netapi32" _
      (ByVal lBuffer&) As Long
Private Declare Sub lstrcpyW _
      Lib "kernel32" _
      (vDest As Any, ByVal vSrc As Any)
Public Declare Sub CopyMemory Lib "kernel32" _
        Alias "RtlMoveMemory" ( _
        hpvDest As Any, _
        ByVal hpvSource As Any, _
        ByVal cbCopy As Long)
Private Declare Function GetComputerName _
      Lib "kernel32" Alias "GetComputerNameA" _
      (ByVal lpBuffer As String, _
       nSize As Long) As Long
'Funzione di esempio
Public Function GetServers() As Variant
   Dim pstrServerName         As String
   Dim pstrComputerName       As String
   Dim pstrDomainName         As String
   Dim pbytBuf(512)           As Byte
   Dim plngRtn                As Long
   Dim plngSrvInfoRtn         As Long
   Dim plngPreferedMaxLen     As Long
   Dim plngNumEntriesRead     As Long
   Dim plngTotalEntries       As Long
   Dim plngServerType         As Long
   Dim plngResume             As Long
   Dim plngCnt                As Long
   Dim lSeverInfo101StructPtr As Long
   Dim plngServEnumLevel      As Long
   Dim plngPos                As Long
   Dim ptypServerInfo101      As SERVER_INFO_101
   Dim plngLenComputerName    As Long
   Dim pvntComputers()        As Variant
   'Just in case. Meglio perň una gestione degli errori piů definita.
   On Error Resume Next
   pstrComputerName = vbNullString
   pstrServerName = vbNullString
   pstrDomainName = vbNullString
   plngServEnumLevel = 101
   'Questa variabile indica il tipo di server che si
   'intende elencare. E' possibile specificare SV_TYPE_ALL,
   'includendo anche Workstation Win95, Win98 ecc.
   'In questo caso cerca server NT Server o NT workstation
   plngServerType = SV_TYPE_NT
   ' NetServerEnum rende una lista dei Server del tipo indicato
   plngRtn = NetServerEnum(pstrServerName, _
         plngServEnumLevel, plngSrvInfoRtn, _
         plngPreferedMaxLen, plngNumEntriesRead, _
         plngTotalEntries, plngServerType, _
         pstrDomainName, plngResume)
   'L'indice inizia da 1. Occorre ciclare fino al numero
   'massimo di entries indicato per ottenere i nomi dei server
   plngCnt = 1
   lSeverInfo101StructPtr = plngSrvInfoRtn
   ReDim pvntComputers(1 To plngTotalEntries)
   For plngCnt = 1 To plngTotalEntries
      pstrComputerName = ""
      'Rende la struttura leggibile a VB
      CopyMemory _
            ptypServerInfo101, _
            ByVal lSeverInfo101StructPtr, _
            Len(ptypServerInfo101)
      lstrcpyW pbytBuf(0), ptypServerInfo101.wki101_servername
      pstrComputerName = pbytBuf
      plngPos = InStr(pstrComputerName, vbNullChar)
      If plngPos > 0 Then
         pstrComputerName = Mid$(pstrComputerName, 1, plngPos - 1)
      End If
      pvntComputers(plngCnt) = pstrComputerName
       O anche:
      'List1.AddItem pstrComputerName
      lSeverInfo101StructPtr = lSeverInfo101StructPtr + Len(ptypServerInfo101)
   Next plngCnt
   'Rialscia il buffer
   plngRtn = NetApiBufferFree(plngSrvInfoRtn)
   'GetServers ritorna l'elenco dei server ottenuti
   GetServers = pvntComputers
End Function
---------------------------------------------------------------

 che faccia vedere tutti i pc che sono nella tua rete.
Se ti serve un esempio che utilizza WNetEnumResource
te lo posso inviare. E' troppo lungo per metterlo tutto qui.

...

per caso e' quell'esempio che ho trovato anch'io con la treeview ? io me lo
sono riscritto perche' dopo un po' andava in palla (nota: le risorse di rete
cui mi collego sono tantissime)
ciao
Davide

cui mi collego sono tantissime)
Se poteste mandarmeli entrambi ve ne sarei grato...
Cosě posso confrontarli e vedere quale fa piů al caso mio ^__^
Per essere piů specifico sto facendo un programmino che aggiorna la
versione dell'eseguibile a tutte le postazioni di una lan. Finora mi
sono appoggiato ad un'elenco su un file di testo, ma preferirei avere
qualcosa piu' "malleabile"
-- 
Giovanni "Gyo" Perdicaro
E-Mail: 
gperd...@sicilyonline.it

 It was Thu, 18 May 2000 13:01:45 +0200 when "Davide Greco"
[Jimi]


bene sul sito comune...
Tranquillo, per me sta benissimo ^___^


sul sito comune ?
con il rischio che quel cretino di mbvbsite (o come diavolo si chiama)
scriva il suo nome al posto del mio e poi mi prenda in giro dicendo che fra
i suoi link e' orgoglioso di metterci il SC ?
ahahahahha
uuuuuuuuahahahahaha
aspe' che prima lo denuncio e gli faccio arrivare la finanza a casa (anche a
casa della sorella.. eheheh)
ciao
Davide
NB
ma io mi chiedo... ma se sto scellerato copia tutto per farsi bello..... nun
se potrebbe copia' pure n'applet che gli formatta il cervello ?