Rede - enumerando as conexoes de rede |
Top Previous Next |
|
// Enumerando as conexoes de rede
procedure TForm1.FormCreate(Sender: TObject); var i : Integer; Count, Size, rc : Cardinal; NetHandle : THandle; NetResources : Array of TNetResource; begin // abre enumeração if WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0, nil, NetHandle) <> NO_ERROR then Exit; try SetLength(NetResources,50); // tamanho inicial de NetResources try while True do begin // pega o máximo de elementos Count := Cardinal(-1); Size := Length(NetResources)*SizeOf(TNetResource); // pega as conexões rc := WNetEnumResource(NetHandle, Count, @NetResources[0], Size); // tamanho insuficiente. aumenta-o if rc = ERROR_MORE_DATA then begin SetLength(NetResources, Round(Size/Sizeof(TNetResource)+0.5)); Continue; end; if rc <> NO_ERROR then Exit; // preenche a listbox for i := 0 to Count - 1 do with NetResources[i] do ListBox1.Items.Add(lpRemoteName) end; finally NetResources := Nil; end; finally WNetCloseEnum(NetHandle); // fecha a enumeração end; end; |