Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS DELPHI F.A.Q DELPHI TUTORIELS DELPHI LIVRES COMPOSANTS SOURCES DEFI TELECHARGEZ DELPHI TV
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES ARTICLES NONOVISU ACCUEIL NOUVELLES
Retour à l'accueil
20 - LECTEUR RESEAU

PRÉSENTATION : Création/test/supression de lecteurs réseau avec Delphi
ZIP : Téléchargez le zip : miroir 1 , miroir 2 APERÇUS :

NOTES : Le titre à tout dit...
Utilisation :
ConnecteLecteurReseau(Lecteur,Chemin,MotPasse:String);
Connecte le lecteur "Lecteur" au chemin réseau "Chemin" dont le mot de passe est "MotPasse". Cette procédure ne teste pas l'existance du lecteur demandé, il est préférable d'utiliser la procédure suivante.
ConnecteLecteurReseauTest(Lecteur,Chemin,MotPasse:String);
Connecte le lecteur "Lecteur" au chemin réseau "Chemin" dont le mot de passe est "MotPasse". Cette procédure teste l'existance du lecteur demandé, si celui-ci existe avec le chemin demandé alors le lecteur existant est conservé.Si le lecteur existe avec un chemin différent de celui demandé, le lecteur précédent est supprimé et le lecteur demandé est créé.

CODE :
Unit ULecteurReseau;

Interface

Function ConnecteLecteurReseau     (Lecteur,Chemin,MotPasse:String):Boolean;
Function ConnecteLecteurReseauTest (Lecteur,Chemin,MotPasse:String):Boolean;

Implementation

Uses Windows,SysUtils,Dialogs;

Procedure AffErreurLecteur(Retour:THandle);
Var ErrorBufAZT    :Array[0..512]Of Char;
    NameBufAZT     :Array[0..512]Of Char;
Begin
  If Retour<>NO_ERROR Then
  Begin
    Retour:=GetLastError;
    Case Retour Of
      ERROR_ACCESS_DENIED
        :ShowMessage('Erreur lecteur réseau:'#13'Accès réfusé');
      ERROR_ALREADY_ASSIGNED
        :ShowMessage('Erreur lecteur réseau:'#13'Lecteur réseau déjà utilisé');
      ERROR_BAD_DEV_Type
        :ShowMessage('Erreur lecteur réseau:'#13'Ressource réseau incompatible');
      ERROR_BAD_DEVICE
        :ShowMessage('Erreur lecteur réseau:'#13'Lecteur réseau invalide');
      ERROR_BAD_NET_NAME
        :ShowMessage('Erreur lecteur réseau:'#13'Chemin réseau incorrect');
      ERROR_BAD_PROFILE
        :ShowMessage('Erreur lecteur réseau:'#13'Profile utilisateur incorrecte');
      ERROR_BAD_PROVIDER
        :ShowMessage('Erreur lecteur réseau:'#13'Erreur provider');
      ERROR_BUSY
        :ShowMessage('Erreur lecteur réseau:'#13'Provider occupé');
      ERROR_CANCELLED
        :ShowMessage('Erreur lecteur réseau:'#13'Connection annulée');
      ERROR_CANNOT_OPEN_PROFILE
        :ShowMessage('Erreur lecteur réseau:'#13'Profile utilisateur introuvable');
      ERROR_DEVICE_ALREADY_REMEMBERED
        :ShowMessage('Erreur lecteur réseau:'#13'Lecteur déjà existant dans le profile utilisateur');
      ERROR_EXTENDED_ERROR                  :Begin
          Retour:=WNetGetLastError(Retour,ErrorBufAZT,512,NameBufAZT,512);
          ShowMessage('Erreur étendue :'+IntToStr(Retour)+
                       #13+StrPas(ErrorBufAZT)+#13+StrPas(NameBufAZT));
        End;
      ERROR_INVALID_PASSWORD
        :ShowMessage('Erreur lecteur réseau:'#13'Mot de passe incorrect');
      ERROR_NO_NET_Or_BAD_PATH
        :ShowMessage('Erreur lecteur réseau:'#13'Pas de réseau ou chemin réseau inconnu');
      ERROR_NO_NETWORK
        :ShowMessage('Erreur lecteur réseau:'#13'Pas de réseau');
      ERROR_Not_CONNECTED
        :ShowMessage('Erreur lecteur réseau:'#13'Lecteur non connecté');
      ERROR_MORE_DATA
        :ShowMessage('Erreur lecteur réseau:'#13'Pas assez de place pour les données');
      ERROR_CONNECTION_UNAVAIL
        :ShowMessage('Erreur lecteur réseau:'#13'Connection permanente non disponible');
      ERROR_DEVICE_In_USE
        :ShowMessage('Erreur lecteur réseau:'#13'Lecteur réseau utilisée, déconnection impossible');
      ERROR_OPEN_FILES
        :ShowMessage('Erreur lecteur réseau:'#13'Fichiers ouverts, déconnection impossible');
    End;
  End;
End;

Function ConnecteLecteurReseau(Lecteur,Chemin,MotPasse:String):Boolean;
Var NetResource    :TNetResource;
    LocalNameAZT   :Array[0..79]Of Char;
    RemoteNameAZT  :Array[0..79]Of Char;
    PassWordAZT    :Array[0..79]Of Char;
    Retour         :Integer;
Begin
  // Remplissage des données
  With NetResource Do
  Begin
    DwType        := RESOURCETYPE_DISK;
    LpLocalName   := StrPCopy(LocalNameAZT  ,Lecteur);
    LpRemoteName  := StrPCopy(RemoteNameAZT ,Chemin);
    LpProvider    := Nil;
  End;

  // Connection
  Retour:=WNetAddConnection2(NetResource,StrPCopy(PassWordAZT,MotPasse),Nil,CONNECT_UPDATE_PROFILE);

  // Test de la réponse
  Result:=Retour=NO_ERROR;
  AffErreurLecteur(Retour);
End;

Function ConnecteLecteurReseauTest(Lecteur,Chemin,MotPasse:String):Boolean;
Var LocalNameAZT   :Array[0..79]Of Char;
    RemoteNameAZT  :Array[0..80]Of Char;
    Longueur       :Cardinal;
    Retour         :Integer;
Begin
  // Recherche du chemin existant si existant
  Longueur:=80;
  Retour:=WNetGetConnection(StrPCopy(LocalNameAZT,Lecteur),RemoteNameAZT,Longueur);
  If Retour=NO_ERROR
  Then Begin // Lecteur déjà défini
    If UpperCase(StrPas(RemoteNameAZT))=UpperCase(Chemin)
    Then Begin  // Lecteur déjà existant
      Result:=True;
    End
    Else Begin  // Lecteur exitant mais chemin incorrect
      Retour:=WNetCancelConnection2(StrPCopy(LocalNameAZT,Lecteur),CONNECT_UPDATE_PROFILE,False);
      If Retour=NO_ERROR
      Then Begin // Deconnection du précédent lecteur OK => Connection du nouveau
        Result:=ConnecteLecteurReseau(Lecteur,Chemin,MotPasse);
      End
      Else Begin
        AffErreurLecteur(Retour);
        Result:=False;
      End;
    End;
  End
  Else Begin
    If Retour=ERROR_Not_CONNECTED
    Then Begin // Lecteur non connecté => Connection du nouveau
      Result:=ConnecteLecteurReseau(Lecteur,Chemin,MotPasse);
    End
    Else Begin
      AffErreurLecteur(Retour);
      Result:=False;
    End;
  End;
End;

End.

Les sources présentées sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsables bénévoles de la rubrique Delphi : Nono40 et Pedro - Contacter par EMail :
Vos questions techniques : forum d'entraide Delphi - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.