Results 1 to 4 of 4

Thread: List Net Work - Tedious Process

  1. #1

    Thread Starter
    Hyperactive Member venkatraman_r's Avatar
    Join Date
    Jul 1999
    Location
    Chennai, INDIA
    Posts
    284

    Post

    Hi,

    Presently, I am using a drive list box to list all the drives locally. But now, I need to list all the networks available in a listbox. Can anyone of you gurus help me out with some sample codes??

    Thanx...I just frustrated trying my codes

    Regards,

    Venkat.

  2. #2
    Member
    Join Date
    Nov 1999
    Location
    panama
    Posts
    57

    Post

    use:
    a= drivelistbox.listcount
    for i=1 to a
    driv=drivelistbox1.list(i)
    listbox1.additem driv
    next i

    display the information in listbox

    ------------------
    carlos alberto perez vergara
    carlosapv@hotmail.com
    analist programming
    visual basic 5.0


  3. #3
    Lively Member Ishamel's Avatar
    Join Date
    Nov 1999
    Location
    Edinburgh, Scotland
    Posts
    112

    Post

    Venkatraman,

    This might be what you are looking for.

    Place this in a Module.

    Code:
    Public 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
    
    
    Public 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
    
    
    Public Declare Function WNetEnumResource Lib "mpr.dll" Alias _
    "WNetEnumResourceA" ( _
    ByVal hEnum As Long, _
    lpcCount As Long, _
    ByVal lpBuffer As Long, _
    lpBufferSize As Long) As Long
    
    
    Public Declare Function WNetCloseEnum Lib "mpr.dll" ( _
    ByVal hEnum As Long) As Long
    
    
    'RESOURCE ENUMERATION.
    Public Const RESOURCE_CONNECTED = &H1
    Public Const RESOURCE_GLOBALNET = &H2
    Public Const RESOURCE_REMEMBERED = &H3
    Public Const RESOURCETYPE_ANY = &H0
    Public Const RESOURCETYPE_DISK = &H1
    Public Const RESOURCETYPE_PRINT = &H2
    Public Const RESOURCETYPE_UNKNOWN = &HFFFF
    Public Const RESOURCEUSAGE_CONNECTABLE = &H1
    Public Const RESOURCEUSAGE_CONTAINER = &H2
    Public Const RESOURCEUSAGE_RESERVED = &H80000000
    Private Const GMEM_FIXED = &H0
    Private Const GMEM_ZEROINIT = &H40
    Private Const GPTR = (GMEM_FIXED Or GMEM_ZEROINIT)
    
    
    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
    
    Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
    
    Private Declare Function CopyPointer2String Lib "KERNEL32" Alias "lstrcpyA" (ByVal NewString As String, ByVal OldString As Long) As Long
    
    
    Public Sub DoNetEnum() '+++++++++++starting point for finding the active connection
        Dim hEnum As Long, lpBuff As Long, NR As NETRESOURCE
        Dim cbBuff As Long, cCount As Long
        Dim p As Long, res As Long, i As Long
    
        'Setup the NETRESOURCE input structure.
        NR.lpRemoteName = 0
        'NR.lpLocalName = 0
        cbBuff = 10000
        cCount = &HFFFFFFFF
    
        'Open a Net enumeration operation handle: hEnum.
        res = WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0, NR, hEnum)
        
        If res = 0 Then
            'Debug.Print NR.lpLocalName
            'Create a buffer large enough for the results.
            '10000 bytes should be sufficient.
            lpBuff = GlobalAlloc(GPTR, cbBuff)
            
            'Call the enumeration function.
            res = WNetEnumResource(hEnum, cCount, lpBuff, cbBuff)
            
            If res = 0 Then
                p = lpBuff
                
                'WNetEnumResource fills the buffer with an array of
                'NETRESOURCE structures. Walk through the list and print
                'each local and remote name.
                For i = 1 To cCount
                    ' All we get back are the Global Network Containers --- Enumerate each of these
                    CopyMemory NR, ByVal p, LenB(NR)
                    Form1.Show
                    Form1.List1.AddItem "Network Name " & PointerToString(NR.lpRemoteName)
                
                    DoNetEnum2 NR
            
                    p = p + LenB(NR)
                Next i
            End If
        
            If lpBuff <> 0 Then GlobalFree (lpBuff)
            
            WNetCloseEnum (hEnum) 'Close the enumeration
        End If
    End Sub
    
    
    Private Function PointerToString(p As Long) As String
        'The values returned in the NETRESOURCE structures are pointers to
        'ANSI strings so they need to be converted to Visual Basic Strings.
        Dim s As String
        
        s = String(255, Chr$(0))
        
        CopyPointer2String s, p
        
        PointerToString = Left(s, InStr(s, Chr$(0)) - 1)
    End Function
    
    
    Public Sub DoNetEnum2(NR As NETRESOURCE)
        Dim hEnum As Long, lpBuff As Long
        Dim cbBuff As Long, cCount As Long
        Dim p As Long, res As Long, i As Long
        
        'Setup the NETRESOURCE input structure.
        cbBuff = 10000
        cCount = &HFFFFFFFF
        
        'Open a Net enumeration operation handle: hEnum.
        res = WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0, NR, hEnum)
        
        If res = 0 Then
        'Create a buffer large enough for the results.
        '10000 bytes should be sufficient.
        lpBuff = GlobalAlloc(GPTR, cbBuff)
        'Call the enumeration function.
        res = WNetEnumResource(hEnum, cCount, lpBuff, cbBuff)
        If res = 0 Then
        p = lpBuff
        'WNetEnumResource fills the buffer with an array of
        'NETRESOURCE structures. Walk through the list and print
        'each remote name.
        For i = 1 To cCount
        CopyMemory NR, ByVal p, LenB(NR)
        Form1.List1.AddItem "Network Computer #" & i & " " & PointerToString(NR.lpRemoteName)
        p = p + LenB(NR)
        Next i
        End If
        If lpBuff <> 0 Then GlobalFree (lpBuff)
        WNetCloseEnum (hEnum) 'Close the enumeration
        Else
        End If
    End Sub
    And place this code in From1's Load event. Make sure there is a list box control on From 1.

    Code:
    Private Sub Form_Load()
        Call DoNetEnum
    End Sub
    A bit of a mouth full, but it should display all Network Names.


    [This message has been edited by Ishamel (edited 12-02-1999).]

  4. #4

    Thread Starter
    Hyperactive Member venkatraman_r's Avatar
    Join Date
    Jul 1999
    Location
    Chennai, INDIA
    Posts
    284

    Post

    Hi Guys,

    Thanx a lot for your effort.

    carlosapv, ur code will display only the content of the drive list box in the listbox. But I need it to display all the network drives also. Anyway, Thanx man..

    Ishamel, i think i have tried ur code before. Think it works. Can u please send me email with a clear step by step explanation of ur code. Its too difficult for a beginner to understand such codes.

    Thanx again guys.

    Venkat.

    email: venkatraman_r@hotmail.com

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width