IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[D6] Comment parcourir et afficher la liste des répertoires d'un répertoire distant ?


Sujet :

Delphi

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut [D6] Comment parcourir et afficher la liste des répertoires d'un répertoire distant ?
    Comment parcourir et afficher la liste des répertoires d'un répertoire d'une machine distante ?

    Avec un TSearchRec, je peux parcourir une arborescence local, mais pas réseau.

    J'ai essayé de jouer avec le TShellTreeView, mais il ne voit qu'une petite partie du réseau (et il n'est pas pratique a utiliser).

    Une idée ...?


  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 449
    Points : 5 876
    Points
    5 876
    Par défaut
    salut


    ta machine et sur le meme reseau ?
    tu as un lecteur connecté ?

    il est difficile de repondre avec si peut d'infos

    @+ phil

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    ta machine et sur le meme reseau ?
    Oui.
    C'est vrai, j'ai pas précisé.

    Citation Envoyé par anapurna
    tu as un lecteur connecté ?
    Non, et il ne doit pas y en avoir.

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 449
    Points : 5 876
    Points
    5 876
    Par défaut
    salut

    tu doit utiliser un protocole particulier ?
    sinon tu peut regarder du cote du ftp ou de vim


    @+ Phil

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    tu doit utiliser un protocole particulier ?
    Non, mais la solution la plus simple est la bienvenue.

    Citation Envoyé par anapurna
    sinon tu peut regarder du cote du ftp ou de vim
    Je ne m'y connais pas beaucoup en ftp, mais il me semble qu'il faut un serveur ftp sur la machine qu'on attaque, non ?

    vim, connais pas. Tu as un lien ?

    Il n'y aurrait pas des API windows pour parcourir une arborescence ?

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 449
    Points : 5 876
    Points
    5 876
    Par défaut
    salut

    il y 'as bien une api mais celles si ne fonction que pour des disque connecter

    tu peut connecter le disque en runtime et ensuite faire ton listage de dossier

    regarde du cote de :
    WNetAddConnection2

    en mode deconnecter je ne vois pas si l'autre n'est pas serveur ?

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    il y 'as bien une api mais celles si ne fonction que pour des disque connecter

    tu peut connecter le disque en runtime et ensuite faire ton listage de dossier

    regarde du cote de :
    WNetAddConnection2
    Merci.
    Je regarde ...

    Citation Envoyé par anapurna
    en mode deconnecter je ne vois pas si l'autre n'est pas serveur ?
    C'est-à-dire ?
    Si ta question, c'est si j'attaque des serveurs, c'est oui.


  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 449
    Points : 5 876
    Points
    5 876
    Par défaut
    salut

    je ne comprend pas ta demande
    tu veut explorer visuelement ou pas le reseau
    si ou le shelltreeview associe a un shellListview
    devrai etre largement sufissant

    @+ Phil

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    tu veut explorer visuelement ou pas le reseau
    Oui. C'est tout bêtement ça.
    Je veux permettre à l'utilisateur de sélectionner un répertoire, en naviguant comme dans un TOpenDialog (sauf que je ne veux montrer que les répertoires et pas les fichiers).
    J'ai testé SelectDirectories, mais j'ai pas réussi à afficher le réseau.

    Citation Envoyé par anapurna
    si ou le shelltreeview associe a un shellListview
    devrai etre largement sufissant
    Je ne sais pas.
    J'ai testé, mais je n'arrive à rien, d'intéressant. Il me montre des portions du domaine dont je n'ai que faire, mais tous les serveurs qui m'intéresse, il ne les affiche pas.
    Et comme il n'y a pas d'aide sur ces composants, je n'ai pas réussi à deviner comment je pouvais leur dire de m'afficher le contenu de tel répertoire de tel serveur.
    Mais, si tu sais, je prend.


  10. #10
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    tu peut connecter le disque en runtime et ensuite faire ton listage de dossier

    regarde du cote de :
    WNetAddConnection2
    J'obtiens l'erreur : ERROR_BAD_DEVICE
    Avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       _szChemin := '\\NomServeur\repertoire\';
       if ConnexionLecteur('Z', PChar(_szChemin)) <> NO_ERROR then
       begin
          ShowMessage(IntToStr(GetLastError) + #13#10 + SysErrorMessage(GetLastError));
          Exit;
       end;
       ShellTreeView.Root := 'Z:\';                              	
       if DeconnexionLecteur(PChar('Z')) <> NO_ERROR then
          ShowMessage(SysErrorMessage(GetLastError));
    Et les fonctions (je l'ai trouvées sur le net):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function ConnexionLecteur(Lettre, UNC: PChar): DWORD;
    var
       NR: TNetResource;
    begin
       //.Connexion des lecteurs.
       FillChar(NR, SizeOf(NR), 0);
       with NR do
       begin
          dwType := RESOURCETYPE_DISK;
          lpLocalName := Lettre;
          lpRemoteName := UNC;
       end;
       WNetCancelConnection2(NR.lpLocalName, 0, True);
       Result := WNetAddConnection2(NR, 'mdp', 'utilisateur', 0);
    end;
     
    function DeconnexionLecteur(Lettre: PChar): DWORD;
    begin
       //.Déconnexion des lecteurs.
       Result := WNetCancelConnection2(Lettre, 0, True);
    end;
    Sous quelle forme, dois-je donner le chemin ?


  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 449
    Points : 5 876
    Points
    5 876
    Par défaut
    salut

    avec l'explorateur windows accede tu a tes serveur ?

    un exmple de connection
    http://www.dsdt.info/tipps/?id=166

    @+ Phil

  12. #12
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Euhh ?? une question: avec SelectDirectory on peut accéder au voisinage réseau ? Non ?

    @+

  13. #13
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    avec l'explorateur windows accede tu a tes serveur ?
    Oui, bien sûr.
    J'ai testé un exemple de chemin qui fonctionne (et auquel j'ai les droits).


    Citation Envoyé par anapurna
    un exmple de connection
    http://www.dsdt.info/tipps/?id=166
    Je regarde ...




    Citation Envoyé par Cl@udius
    Euhh ?? une question: avec SelectDirectory on peut accéder au voisinage réseau ? Non ?
    Tu parles de cà ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectDirectory('', '::{208D2C60-3AEA-1069-A2D7-08002B30309D}', s);
    J'ai testé, mais on ne vois pas les répertoires et les serveurs qui m'intéresse.


  14. #14
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    un exmple de connection
    http://www.dsdt.info/tipps/?id=166
    Bon, j'ai testé et j'ai une erreur différente, que je ne comprend pas :
    1219
    Plusieurs connexions à un serveur ou à une ressource partagée par le même utilisateur, en utilisant plus d'un nom utilisateur, ne sont pas autorisées. Supprimez toutes les connexions précédentes au serveur ou à la ressource partagée et recommencez
    Qu'est ce qu'il veut dire par là ?
    J'ai essayé sans donner de login / mot de passe, mais là, j'ai une erreur de droit. Donc, il faut bien spécifier un login / mot de passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    function ConnexionLecteur(szLecteur, szChemin: String): DWORD;
    var
       NetResource: TNetResource;
    begin
       szChemin := ExcludeTrailingPathDelimiter(szChemin);
     
    //   FillChar(NetResource, SizeOf(NetResource), 0);
       NetResource.dwType := RESOURCETYPE_DISK;
       NetResource.lpLocalName := PChar(szLecteur);
       NetResource.lpRemoteName := PChar(szChemin);
       NetResource.lpProvider := nil;
       WNetCancelConnection2(NetResource.lpLocalName, 0, True);
     
       //.Connexion du lecteur.
       Result := WNetAddConnection2(NetResource, 'MDP', 'admin', 0);
    end;
     
    function DeconnexionLecteur(const szLecteur: String): DWORD;
    begin
       //.Déconnexion du lecteur.
       Result := WNetCancelConnection2(PChar(szLecteur), 0, True);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       _szChemin := '\\shm3\tous';
       if ConnexionLecteur('Z:', _szChemin) <> NO_ERROR then
       begin
          ShowMessage(IntToStr(GetLastError) + #13#10 + SysErrorMessage(GetLastError));
          Exit;
       end;
       ShellTreeView.Root := 'Z:\';
       if DeconnexionLecteur('Z:') <> NO_ERROR then
          ShowMessage(SysErrorMessage(GetLastError));

  15. #15
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Lung
    J'ai testé, mais on ne vois pas les répertoires et les serveurs qui m'intéresse.
    Bon ben alors considère que je n'ai rien dit. Sorry.

    @+

  16. #16
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 449
    Points : 5 876
    Points
    5 876
    Par défaut
    salut

    il veut tout simplement dire que le lecteur que tu essai de mapper existe deja

    verifie que tu n'est pas un lecteur 'X' par hazard

    @+ Phil

  17. #17
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    Citation Envoyé par anapurna
    il veut tout simplement dire que le lecteur que tu essai de mapper existe deja

    verifie que tu n'est pas un lecteur 'X' par hazard
    J'utilise la lettre Z, parce qu'elle n'est pas utilisée sur mon poste. Donc, ça devrait fonctionner logiquement.
    En plus, dans la fonction de connexion du nouveau lecteur réseau, je commence par faire un WNetCancelConnection2, au cas où.

    J'ai même déconnecté le lecteur réseau (dans mon explorateur windows) qui correspondait au même partage (mais utilisant une autre lettre de lecteur).
    Mais, ca ne change rien. Ca me donne la même erreur.

    Je séche un peu, là ...


  18. #18
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 682
    Points : 7 122
    Points
    7 122
    Par défaut
    J'ai trouvé !!!

    Grâce à ce lien (http://nono40.developpez.com/sources/source0020/), j'ai essayé de ne pas spécifier de login. Juste le mot de passe.
    Et ça marche !

    Je ne comprend pas pourquoi, mais c'est le résultat qui compte.

    pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/09/2013, 12h55
  2. Réponses: 2
    Dernier message: 30/03/2013, 09h57
  3. Comment afficher une liste des icons
    Par z4k4r14 dans le forum Langage
    Réponses: 8
    Dernier message: 31/01/2012, 12h52
  4. comment afficher la liste des valeurs dans QRChart ?
    Par tonton67 dans le forum C++Builder
    Réponses: 0
    Dernier message: 05/06/2008, 18h43
  5. Réponses: 4
    Dernier message: 03/02/2008, 06h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo