procedure TForm1.Button1Click(Sender: TObject); var i, dwResult: DWORD ; hEnum: THANDLE ; lpnrDrv: PNETRESOURCE ; s: string; const cbBuffer:DWORD = 16384; cEntries: DWORD = $FFFFFFFF; begin
< b> dwResult := WNetOpenEnum( RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0, nil, hEnum ); < /b> if (dwResult < > NO_ERROR) then begin ShowMessage('Cannot enumerate network drives.' ); Exit; end; s := ''; repeat lpnrDrv := PNETRESOURCE (GlobalAlloc( GPTR, cbBuffer )); dwResult := WNetEnumResource( hEnum, cEntries, lpnrDrv, cbBuffer); if (dwResult = NO_ERROR) then begin s := 'Network drives:'#13#10; for i := 0 to cEntries - 1 do begin if lpnrDrv^.lpLocalName < > nil then s := s + lpnrDrv^.lpLocalName + #9 + lpnrDrv^.lpRemoteName; Inc(lpnrDrv); end; end else if dwResult < > ERROR_NO_MORE_ITEMS then begin s := s + 'Cannot complete network drive enumeration'; GlobalFree( HGLOBAL(lpnrDrv)); break; end; GlobalFree( HGLOBAL(lpnrDrv) ); until (dwResult = ERROR_NO_MORE_ITEMS ); WNetCloseEnum(hEnum); if s = '' then s := 'No network connections.'; ShowMessage(s); end;
|