Ver Mensaje Individual
  #7  
Antiguo 13-06-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Para que salga el dialogo estandar de windows para conectar a una unidad de red, basta con esto:
Código Delphi [-]
  WNetConnectionDialog(Handle,RESOURCETYPE_DISK);

Si quieres añadir la unidad de red por código Silencioso (sin mostrar mensajes):
Código Delphi [-]
procedure TForm1.btnConectaPorCodigoClick(Sender: TObject);
var
  Err:Cardinal;
  Msg:string;
  NetResource: TNetResource;
begin

  // LLenamos la estructura NetResource
  NetResource.dwType       := RESOURCETYPE_DISK  ;
  NetResource.lpLocalName  := pchar('Z:');
  NetResource.lpRemoteName := PChar('\\winxp\imagenes');
  NetResource.lpProvider   := nil;

  // mapeamos la unidad con la estructura anterior
  Err:= WNetAddConnection2(NetResource,
                     nil, // contraseña o dejar vacio
                     nil, // Nombre del usurio o vacio/User name o vacio}
                     CONNECT_UPDATE_PROFILE);
  if Err <> NO_ERROR then
  begin
      case Err of
      ERROR_ACCESS_DENIED             : Msg :='ERROR_ACCESS_DENIED             :';
      ERROR_ALREADY_ASSIGNED          : Msg :='ERROR_ALREADY_ASSIGNED          :';
      ERROR_BAD_DEV_TYPE              : Msg :='ERROR_BAD_DEV_TYPE              :';
      ERROR_BAD_DEVICE                : Msg :='ERROR_BAD_DEVICE                :';
      ERROR_BAD_NET_NAME              : Msg :='ERROR_BAD_NET_NAME              :';
      ERROR_BAD_PROFILE               : Msg :='ERROR_BAD_PROFILE               :';
      ERROR_BAD_PROVIDER              : Msg :='ERROR_BAD_PROVIDER              :';
      ERROR_BUSY                      : Msg :='ERROR_BUSY                      :';
      ERROR_CANCELLED                 : Msg :='ERROR_CANCELLED                 :';
      ERROR_CANNOT_OPEN_PROFILE       : Msg :='ERROR_CANNOT_OPEN_PROFILE       :';
      ERROR_DEVICE_ALREADY_REMEMBERED : Msg :='ERROR_DEVICE_ALREADY_REMEMBERED :';
      ERROR_EXTENDED_ERROR            : Msg :='ERROR_EXTENDED_ERROR            :';
      ERROR_INVALID_PASSWORD          : Msg :='ERROR_INVALID_PASSWORD          :';
      ERROR_NO_NET_OR_BAD_PATH        : Msg :='ERROR_NO_NET_OR_BAD_PATH        :';
      ERROR_NO_NETWORK                : Msg :='ERROR_NO_NETWORK                :';
      ERROR_NOT_CONNECTED             : Msg :='ERROR_NOT_CONNECTED             :';
      end;
      Raise Exception.create('Error al conectar la unidad '+ #10#13+Msg );
   end;
end;

procedure TForm1.btnDesconectaClick(Sender: TObject);
begin
 if WNetCancelConnection2( 'Z:',1,TRUE) <> NO_ERROR then
    Raise Exception.create('Error al desconectar la unidad');

end;

Si deseas ver una lista de las unidades actuales:
Código Delphi [-]
procedure TForm1.btnUnidadesRedClick(Sender: TObject);
  function GetNetworkDriveMappings(SList:TStrings):Integer;
  var
   I:Char;
   ThePath:String;
   MaxNetPathLenWord;
  begin
    SList.Clear;
    MaxNetPathLen:=MAX_PATH;
    SetLength(ThePath,MAX_PATH);

    for I := 'A' to 'Z' do
     if WNetGetConnection(PChar(''+I+':'),PChar(ThePath),
                          MaxNetPathLen)<>ERROR_NOT_CONNECTED then
       SList.Add(I+': '+ThePath);

     {Devuelve el numero de conexiones}
     Result := SList.Count;
  end;
begin
  listbox1.Items.Add('Unidades de Red Encontradas: '+inttostr( GetNetworkDriveMappings(Listbox1.items)));
end;


Espero que te sean de utilidad, si necesitas algo más, avisa.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 04-11-2006 a las 15:05:08.
Responder Con Cita