Mega Code Archive

 
Categories / Delphi / LAN Web TCP
 

Finding all computers in a workgroup

Title: Finding all computers in a workgroup. Question: Finding all computers in a workgroup. Answer: var Computer : Array[1..500] of String[25]; ComputerCount : Integer; procedure FindAllComputers(Workgroup : String); Var EnumHandle : THandle; WorkgroupRS : TNetResource; Buf : Array[1..500] of TNetResource; BufSize : Integer; Entries : Integer; Result : Integer; begin ComputerCount := 0; Workgroup := Workgroup + #0; FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0); With WorkgroupRS do begin dwScope := 2; dwType := 3; dwDisplayType := 1; dwUsage := 2; lpRemoteName := @Workgroup[1]; end; WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @WorkgroupRS, EnumHandle ); Repeat Entries := 1; BufSize := SizeOf(Buf); Result := WNetEnumResource( EnumHandle, Entries, @Buf, BufSize ); If (Result = NO_ERROR) and (Entries = 1) then begin Inc( ComputerCount ); Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName); end; Until (Entries 1) or (Result NO_ERROR); WNetCloseEnum( EnumHandle ); end; { Find All Computers }