Ya une bourde ou bien ?
Y aurait-il un paramètre spécifique sous xp sp2 pour autoriser un poste à parcourrir le réseau ?
Code : Tout sélectionner
;***********************************************************************************
; List all PC's name presents on the local network.
;***********************************************************************************
; Params : None
; Return : List of PC's names separated by a TAB, string
Global ListPC.s
Procedure EnumAll(*nr.NETRESOURCE)
tempnr.NETRESOURCE
hEnum.l
Entries.l
nSize.l
ec.l
x.l
j.l
Entries = -1
nSize = 65536 ;16384
ec = WNetOpenEnum_(#RESOURCE_GLOBALNET, #RESOURCETYPE_ANY, #NULL, *nr, @hEnum)
*Buffer=AllocateMemory(nSize)
ec = WNetEnumResource_(hEnum,@Entries,*Buffer,@nSize)
;MessageRequester("Nb entrées: ", Str(Entries), 0)
For x = 1 To Entries
j = (x-1)*SizeOf(NETRESOURCE)
tempnr\dwDisplayType = PeekL(*Buffer+j+8)
tempnr\dwUsage = PeekL(*Buffer+j+12)
tempnr\lpRemoteName = PeekL(*Buffer+j+20)
RemoteName.s=""
If tempnr\lpRemoteName And (tempnr\dwDisplayType = #RESOURCEDISPLAYTYPE_SERVER)
RemoteName = PeekS(tempnr\lpRemoteName)
ListPC + RemoteName + Chr(9)
;MessageRequester("PC trouvé: ", ListPC, 0)
EndIf
If (tempnr\dwUsage & #RESOURCEUSAGE_CONTAINER)
EnumAll(tempnr)
EndIf
Next
WNetCloseEnum_(hEnum)
EndProcedure
ProcedureDLL LitNet()
; Ici il faut remettre à vide cette chaine car elle est globale à la DLL et n'est donc créée
; qu'au chargement initial de la DLL. Sinon la liste ne fera que s'allonger à chaque appel en
; ne perdant pas son contenu !
ListPC = ""
EnumAll(#NULL)
ListPC = Left(ListPC, Len(ListPC) - 1)
;MessageRequester("Liste des PCs: ", ListPC, 0)
ProcedureReturn @ListPC
EndProcedure
Merci
Dominique