
Code : Tout sélectionner
; '==============================================================================
; ' Network Resource List.
; ' Enumerate all of the networks and network resources available to the
; ' current machine.
; '
; ' Code initial : ABBKlaus, fweil
; ' Corrigé par : Cls
; ' Références : http://www.purebasic.fr/english/viewtopic.php?f=12&t=10300
; '==============================================================================
#Window_Main = 0
#Gadget_ListIcon = 0
Global s.s
Procedure EnumAll(*nr.NETRESOURCE)
;Dim n.NETRESOURCE(255)
Entries = -1
nSize = SizeOf(NETRESOURCE) * 255
n = AllocateMemory(nSize)
s = s + " "
ec = WNetOpenEnum_(#RESOURCE_GLOBALNET, #RESOURCETYPE_ANY, #Null, *nr, @hEnum)
If hEnum
ec = WNetEnumResource_(hEnum, @Entries, n, @nSize)
Debug "Nb entrée : " + Str(Entries)
For x = 1 To Entries
*nNr.NETRESOURCE = n + (x-1)*SizeOf(NETRESOURCE)
Response.s = ""
Select *nNr\dwScope
Case #RESOURCE_CONNECTED
Response = Response + "#RESOURCE_CONNECTED" + Chr(10)
Case #RESOURCE_GLOBALNET
Response = Response + "#RESOURCE_GLOBALNET" + Chr(10)
Case #RESOURCE_REMEMBERED
Response = Response + "#RESOURCE_REMEMBERED" + Chr(10)
Default
Response = Response + "dwScope unknown" + Chr(10)
EndSelect
Select *nNr\dwType
Case #RESOURCETYPE_ANY
Response = Response + "#RESOURCETYPE_ANY" + Chr(10)
Case #RESOURCETYPE_DISK
Response = Response + "#RESOURCETYPE_DISK" + Chr(10)
Case #RESOURCETYPE_PRINT
Response = Response + "#RESOURCETYPE_PRINT" + Chr(10)
Default
Response = Response + "dwType unknown" + Chr(10)
EndSelect
Select *nNr\dwDisplayType
Case #RESOURCEDISPLAYTYPE_DOMAIN
Response = Response + "#RESOURCEDISPLAYTYPE_DOMAIN" + Chr(10)
Case #RESOURCEDISPLAYTYPE_GENERIC
Response = Response + "#RESOURCEDISPLAYTYPE_GENERIC" + Chr(10)
Case #RESOURCEDISPLAYTYPE_SERVER
Response = Response + "#RESOURCEDISPLAYTYPE_SERVER" + Chr(10)
Case #RESOURCEDISPLAYTYPE_SHARE
Response = Response + "#RESOURCEDISPLAYTYPE_SHARE" + Chr(10)
Default
Response = Response + "dwDisplayType unknown" + Chr(10)
EndSelect
Select *nNr\dwUsage
Case #RESOURCEUSAGE_CONNECTABLE
Response = Response + "#RESOURCEUSAGE_CONNECTABLE" + Chr(10)
Case #RESOURCEUSAGE_CONTAINER
Response = Response + "#RESOURCEUSAGE_CONTAINER" + Chr(10)
Default
Response = Response + "dwUsage unknown" + Chr(10)
EndSelect
LocalName.s = ""
If *nNr\lpLocalName
LocalName = PeekS(*nNr\lpLocalName)
Else
LocalName = ""
EndIf
RemoteName.s = ""
If *nNr\lpRemoteName
RemoteName = PeekS(*nNr\lpRemoteName)
Else
RemoteName = ""
EndIf
Response = LocalName + Chr(10) + RemoteName + Chr(10) + Response
Comment.s = ""
If *nNr\lpComment
Comment = PeekS(*nNr\lpComment)
Response = Response + Comment + Chr(10)
EndIf
Provider.s = ""
If *nNr\lpProvider
Provider = PeekS(*nNr\lpProvider)
Response = Response + Provider + Chr(10)
EndIf
AddGadgetItem(#Gadget_ListIcon, -1, Response)
If (*nNr\dwUsage And #RESOURCEUSAGE_CONTAINER)
EnumAll (*nNr)
EndIf
Next
s = Left(s, Len(s) -2)
WNetCloseEnum_(hEnum)
EndIf
Debug "FIN"
EndProcedure
;
; Main starts here
;
Quit = #False
WindowXSize = 800
WindowYSize = 320
If OpenWindow(#Window_Main, 0, 0, WindowXSize, WindowYSize, "MyWindow",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
AddKeyboardShortcut(0, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
If CreateGadgetList(WindowID(#Window_Main))
SetGadgetFont(#PB_Default, LoadFont(0, "Verdana", 7))
ListIconGadget(#Gadget_ListIcon, 10, 10, WindowXSize - 20, WindowYSize - 20, "Local name", 40, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(#Gadget_ListIcon, 1, "Remote name", 120)
AddGadgetColumn(#Gadget_ListIcon, 2, "Scope", 120)
AddGadgetColumn(#Gadget_ListIcon, 3, "Type", 120)
AddGadgetColumn(#Gadget_ListIcon, 4, "Display type", 120)
AddGadgetColumn(#Gadget_ListIcon, 5, "Usage", 120)
AddGadgetColumn(#Gadget_ListIcon, 7, "Comment", 120)
AddGadgetColumn(#Gadget_ListIcon, 8, "Provider", 120)
EndIf
CreateThread(@EnumAll(), #Null)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
Case #PB_Event_Menu
Select EventMenu()
Case #PB_Shortcut_Escape
Quit = #True
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #WM_SIZE
WindowXsize = WindowWidth(#Window_Main)
WindowYSize = WindowHeight(#Window_Main)
ResizeGadget(#Gadget_ListIcon, 10, 10, WindowXSize - 20, WindowYSize - 20)
Default
EndSelect
Until Quit
EndIf
End