'===========================================================================
' Subject: NETWORK RESOURCE LIST              Date: 02-09-98 (15:55)       
'  Author: Dave Navarro, Jr.                  Code: PBDLL                  
'  Origin: dave@powerbasic.com              Packet: PBDLL.ABC
'===========================================================================
'==============================================================================
'
'  Network Resource List for PB/DLL 5.0
'  Copyright (c) 1998 by PowerBASIC, Inc.
'
'  Enumerate all of the networks and network resources available to the
'  current machine.
'
'  Requires MKCON.EXE utility to convert to a CUI application.
'
'==============================================================================

$DIM ALL
$COMPILE EXE
$INCLUDE "WIN32API.INC"

'==============================================================================

GLOBAL hOutput AS LONG

'==============================================================================

SUB StdOut(BYVAL x AS STRING)

  LOCAL Buffer  AS LONG
  LOCAL Written AS LONG

  Buffer = STRPTR(x)
  WriteFile hOutput, BYVAL Buffer, LEN(x), Written, BYVAL %NULL

END SUB

SUB StdOutLn(BYVAL x AS STRING)
  StdOut x & CHR$(13,10)
END SUB


SUB EnumAll (nr AS NETRESOURCE)

  LOCAL hEnum   AS LONG
  LOCAL Entries AS LONG
  LOCAL nSize   AS LONG
  LOCAL ec      AS LONG
  LOCAL x       AS LONG

  STATIC s AS STRING

  DIM n(1 to 256) AS NETRESOURCE

  Entries = 256
  nSize   = SIZEOF(nr) * Entries

  s = s + "  "

  ec = WNetOpenEnum(%RESOURCE_GLOBALNET, %RESOURCETYPE_ANY, %NULL, nr, hEnum)

  ec = WNetEnumResource(hEnum, Entries, n(1), nSize)

  FOR x = 1 TO Entries
    StdOutLn LEFT$(s & n(x).@lpRemoteName + SPACE$(40), 40) + n(x).@lpComment
    IF (n(x).dwUsage AND %RESOURCEUSAGE_CONTAINER) THEN
      EnumAll n(x)
    END IF
  NEXT

  s = LEFT$(s, LEN(s) - 2)

END SUB

'==============================================================================

FUNCTION WinMain (BYVAL CurInst&, _
                  BYVAL PrvInst&, _
                  CmdLine AS ASCIIZ PTR, _
                  BYVAL CmdShow&) EXPORT AS LONG

  LOCAL u AS ASCIIZ * 256

  hOutput = GetStdHandle(%STD_OUTPUT_HANDLE)

  GetUserName u, 256

  StdOutLn "Network Resource List for " & u
  StdOutLn "Copyright (c) 1998 by PowerBASIC, Inc."
  StdOutLn ""

  EnumAll BYVAL %NULL


END FUNCTION
