Search for shared folders in a network (Views: 701)
Problem/Question/Abstract: How to search for shared folders in a network Answer: You will need a listbox, a radiogroup with 3 radio buttons and of course a button. It takes a while depending on the size of your network. procedure TForm1.EnumNetResources(List: TStrings); procedure EnumFunc(NetResource: PNetResource); var Enum: THandle; Count, BufferSize: DWORD; Buffer: array[0..16384 div SizeOf(TNetResource)] of TNetResource; i: Integer; begin if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NetResource, Enum) = NO_ERROR then try Count := $FFFFFFFF; BufferSize := SizeOf(Buffer); while WNetEnumResource(Enum, Count, @Buffer, BufferSize) = NO_ERROR do for i := 0 to Count - 1 do begin case RadioGroup1.ItemIndex of 0: begin {Network Machines} if Buffer[i].dwType = RESOURCETYPE_ANY then List.Add(Buffer[i].lpRemoteName); end; 1: begin {Shared Drives} if Buffer[i].dwType = RESOURCETYPE_DISK then List.Add(Buffer[i].lpRemoteName); end; 2: begin {Printers} if Buffer[i].dwType = RESOURCETYPE_PRINT then List.Add(Buffer[i].lpRemoteName); end; end; if (Buffer[i].dwUsage and RESOURCEUSAGE_CONTAINER) > 0 then EnumFunc(@Buffer[i]) end; finally WNetCloseEnum(Enum); end; end; begin EnumFunc(nil); end; procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.Clear; Screen.Cursor := crHourglass; EnumNetResources(ListBox1.Items); Screen.Cursor := crDefault; end; |