Bonjour à tous,
Sur mon application, je souhaite avoir une liste déroulante qui puisse me ramener tout les nom d'ordinateur disponible dans un réseau.
Est ce que quelqu'un pourrait il m'aider?
Merci d'avance pour toute proposition.
Bonjour à tous,
Sur mon application, je souhaite avoir une liste déroulante qui puisse me ramener tout les nom d'ordinateur disponible dans un réseau.
Est ce que quelqu'un pourrait il m'aider?
Merci d'avance pour toute proposition.
Salut,
Es-tu aller voir dans la FAQ :
Comment retrouver la liste des ordinateurs d'un certain type (serveur, workstation, ...) ?
Comment lister les ressources réseau ?
Faudra surement faire un peu le tri dans tout ça mais c'est déjà une bonne piste je pense![]()
Merci ero-sennin pour la réponse,
J'ai déjà vu ce F.A.Q, mais j'ai pensé que je pourrai avoir quelque chose qui me récupèrera directement les noms des ordinateurs.
De toute façon je vais creuser encore plus sur ces deux topics, en attendant si quelqu'un a déjà eu a faire a ça, qu'il me fasse signe.
Merci beaucoup.
pour avoir les noms des pc dans un browser utilises l'API
avec BIF_BROWSEFORCOMPUTER
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function SHBrowseForFolder (var BrowseInfo: TBrowseInfo): PItemIDList; stdcall;
je me suis déjà inspiré de cet article ici pour
cela
maintenant une autre solution c'est de passer par WNetEnumResource
dont je n'ai pas encore compris les subtilités . En tout cas voici un code qui me permet de lister dans un memo (memo1) les nom des //PC connectés
(je n'ai pas encore tester sur un gros réseau, cela ne saurait tarder)
cette source ,modifiée pour mes besoins , vient du site de codegear
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 procedure GetNetwork(lpNetResource:PNetResourceW); type PNetResourceArray = ^TNetResourceArray; TNetResourceArray = array[0..MaxInt div SizeOf(TNetResource) - 1] of TNetResource; var neh,cnt,size:cardinal; netres:integer; res:PNetResourceArray; i:integer; s:string; itc:TTreeNode; begin { Initialization } cnt := $FFFFFFFF; Size := 50 * SizeOf(TNetResource); { Opening the enumeration } if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,0, lpNetResource, neh) = NO_ERROR then try { Allocating memory } GetMem(Res, Size); { Fetching the net resources } netres := WNetEnumResource(neh, cnt, res, size); { Is there an error } if netres = NO_ERROR then begin { If not browse through the fetxhed net resources } for i := 0 to cnt - 1 do { Controlling if usage is not a network share } if not (res^[i].dwUsage in [1,5]) then begin if (lpnetresource<>nil) AND (res^[i].dwDisplayType <>RESOURCEDISPLAYTYPE_DOMAIN) then Memo1.Lines.Add(res^[i].lpRemoteName); GetNetwork(@res^[i]); end; end; finally { Freeing memory } FreeMem(Res, Size); end; { Closing the enumeration } WNetCloseEnum(neh); end; begin GetNetWork(nil); end;
une chose certaine c'est sa rapidité pour ce qui s'agit du test réseau d'où mon choix voir post
EDIT : Je viens de l'apercevoir que cela s'approche de la FAQ de Laurent Dardenne ou peut s'en faut :quoi: cependant , pas besoin de l'unité LM , juste windows
Une autre source utilisant WNetEnumResource qui intègre la récursion dans le cas de container et la limitation aux types d'éléments qui nous intéressent (plus rapide). Les différents paramètres possibles sont listés ici.
Merci a tous, j'ai réussi et ça marche.
J'ai utilisé la méthode de Andnotor.
Merci beaucoup![]()
Partager