Problème sous XP sp2
Publié : mar. 23/nov./2004 17:41
Salut, j'utilise le code suivant pour lister tous les PC présent sur notre réseau local, ce code fonctionne bien sous w98se, sous w2k mais me retourne une liste vide sous xp sp2 !
Ya une bourde ou bien ?
Y aurait-il un paramètre spécifique sous xp sp2 pour autoriser un poste à parcourrir le réseau ?
Toute aide sera la bien venue !
Merci
Dominique
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