Posted: Sun May 09, 2004 11:23 am
is i mentioned above the Buffer is essential !!!
without the Buffer you get error number 487 = ERROR_INVALID_ADDRESS
for information see the MSDN at http://msdn.microsoft.com/library/defau ... ources.asp
have fun with this :[/url]
without the Buffer you get error number 487 = ERROR_INVALID_ADDRESS
for information see the MSDN at http://msdn.microsoft.com/library/defau ... ources.asp
have fun with this :
Code: Select all
; '==============================================================================
; ' Network Resource List.
; ' Enumerate all of the networks and network resources available to the
; ' current machine.
; ' converted using http://www.powerbasic.com/support/forums/Forum6/HTML/001494.html
; '==============================================================================
#Window_Main = 0
#Gadget_ListIcon = 0
Structure NEWNETRESOURCE
Scope.s
Type.s
DisplayType.s
Usage.s
LocalName.s
RemoteName.s
Comment.s
Provider.s
EndStructure
NewList ListNETRESOURCE.NEWNETRESOURCE()
Procedure EnumAll(*nr.NETRESOURCE)
tempnr.NETRESOURCE
j.l
x.l
Entries = -1
nSize = 16384
*Buffer=AllocateMemory(nSize)
ec = WNetOpenEnum_(#RESOURCE_GLOBALNET, #RESOURCETYPE_ANY, #NULL, *nr, @hEnum)
If hEnum
ec = WNetEnumResource_(hEnum, @Entries, *Buffer, @nSize)
For x = 1 To Entries
j = (x-1) * SizeOf(NETRESOURCE)
tempnr\dwScope = PeekL(*Buffer+j+0)
tempnr\dwType = PeekL(*Buffer+j+4)
tempnr\dwDisplayType = PeekL(*Buffer+j+8)
tempnr\dwUsage = PeekL(*Buffer+j+12)
tempnr\lpLocalName = PeekL(*Buffer+j+16)
tempnr\lpRemoteName = PeekL(*Buffer+j+20)
tempnr\lpComment = PeekL(*Buffer+j+24)
tempnr\lpProvider = PeekL(*Buffer+j+28)
AddElement(ListNETRESOURCE())
Select tempnr\dwScope
Case #RESOURCE_CONNECTED
ListNETRESOURCE()\Scope = "#RESOURCE_CONNECTED"
Case #RESOURCE_GLOBALNET
ListNETRESOURCE()\Scope = "#RESOURCE_GLOBALNET"
Case #RESOURCE_REMEMBERED
ListNETRESOURCE()\Scope = "#RESOURCE_REMEMBERED"
Default
ListNETRESOURCE()\Scope = "dwScope unknown"
EndSelect
Select tempnr\dwType
Case #RESOURCETYPE_ANY
ListNETRESOURCE()\Type = "#RESOURCETYPE_ANY"
Case #RESOURCETYPE_DISK
ListNETRESOURCE()\Type = "#RESOURCETYPE_DISK"
Case #RESOURCETYPE_PRINT
ListNETRESOURCE()\Type = "#RESOURCETYPE_PRINT"
Default
ListNETRESOURCE()\Type = "dwType unknown"
EndSelect
Select tempnr\dwDisplayType
Case #RESOURCEDISPLAYTYPE_DOMAIN
ListNETRESOURCE()\DisplayType = "#RESOURCEDISPLAYTYPE_DOMAIN"
Case #RESOURCEDISPLAYTYPE_GENERIC
ListNETRESOURCE()\DisplayType = "#RESOURCEDISPLAYTYPE_GENERIC"
Case #RESOURCEDISPLAYTYPE_SERVER
ListNETRESOURCE()\DisplayType = "#RESOURCEDISPLAYTYPE_SERVER"
Case #RESOURCEDISPLAYTYPE_SHARE
ListNETRESOURCE()\DisplayType = "#RESOURCEDISPLAYTYPE_SHARE"
Default
ListNETRESOURCE()\DisplayType = "dwDisplayType unknown"
EndSelect
Select tempnr\dwUsage
Case #RESOURCEUSAGE_CONNECTABLE
ListNETRESOURCE()\Usage = "#RESOURCEUSAGE_CONNECTABLE"
Case #RESOURCEUSAGE_CONTAINER
ListNETRESOURCE()\Usage = "#RESOURCEUSAGE_CONTAINER"
Default
ListNETRESOURCE()\Usage = "dwUsage unknown"
EndSelect
If tempnr\lpLocalName
ListNETRESOURCE()\LocalName = PeekS(tempnr\lpLocalName)
Else
ListNETRESOURCE()\LocalName = ""
EndIf
If tempnr\lpRemoteName
ListNETRESOURCE()\RemoteName = PeekS(tempnr\lpRemoteName)
Else
ListNETRESOURCE()\RemoteName = ""
EndIf
If tempnr\lpComment
ListNETRESOURCE()\Comment = PeekS(tempnr\lpComment)
Else
ListNETRESOURCE()\Comment = ""
EndIf
If tempnr\lpProvider
ListNETRESOURCE()\Provider = PeekS(tempnr\lpProvider)
Else
ListNETRESOURCE()\Provider = ""
EndIf
If (tempnr\dwUsage And #RESOURCEUSAGE_CONTAINER)
EnumAll (tempnr)
EndIf
Next
WNetCloseEnum_(hEnum)
FreeMemory(*Buffer)
EndIf
EndProcedure
;
; Main starts here
;
EnumAll(#NULL)
Quit = #FALSE
WindowXSize = 800
WindowYSize = 320
If OpenWindow(#Window_Main, 0, 0, WindowXSize, WindowYSize, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "MyWindow")
AddKeyboardShortcut(0, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
If CreateGadgetList(WindowID())
SetGadgetFont(#PB_Default, LoadFont(0, "Verdana", 7))
ListIconGadget(#Gadget_ListIcon, 10, 10, WindowXSize - 20, WindowYSize - 20, "Local name", 120, #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)
FirstElement(ListNETRESOURCE())
Repeat
s.s = ListNETRESOURCE()\Scope + Chr(10)
s + ListNETRESOURCE()\Type + Chr(10)
s + ListNETRESOURCE()\DisplayType + Chr(10)
s + ListNETRESOURCE()\Usage + Chr(10)
s + ListNETRESOURCE()\LocalName + Chr(10)
s + ListNETRESOURCE()\RemoteName + Chr(10)
s + ListNETRESOURCE()\Comment + Chr(10)
s + ListNETRESOURCE()\Provider + Chr(10)
AddGadgetItem(#Gadget_ListIcon,-1,s)
Until NextElement(ListNETRESOURCE())=0
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = #TRUE
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_Escape
Quit = #TRUE
EndSelect
Case #PB_EventGadget
Select EventGadgetID()
EndSelect
Case #WM_SIZE
WindowXsize = WindowWidth()
WindowYSize = WindowHeight()
ResizeGadget(#Gadget_ListIcon, 10, 10, WindowXSize - 20, WindowYSize - 20)
Default
EndSelect
Until Quit
EndIf
End