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

C# Discussion :

Lister tous les disques d'un réseau dans comboBox


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut Lister tous les disques d'un réseau dans comboBox
    Bonjour,
    Je souhaite réaliser cette boite à dialogue pour lister tous les disques d'un réseau.
    J'ai besoin d'aide seulement pour sélectionner le disque et faire quelque chose de propre dans un ComboBox voir l'exemple que j'ai réalisé en Delphi.
    Je suis perdu en C# pour réaliser cette fiche si quelqu'un peu m'aider ou m'aiguiller.

    En vous remerciant.

    Cordialement
    Images attachées Images attachées   

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    j'ai pas bien compris où tu avais "seulement" besoin d'aide, du coup petit topo :

    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
    		// fonction rattachée à l'évènement Load de la Form
    		private void Form1_Load(object sender, EventArgs e) {
    			// on récupère le tableau des noms des lecteurs
    			string[] drives = Environment.GetLogicalDrives();
    			// on les parcours
    			foreach (string drive in drives) {
    				// on les ajoute à notre ComboBox
    				comboBox1.Items.Add(drive);
    			}
    		}
     
    		// fonction rattachée à l'évènement SelectedIndexChanged de la ComboBox
    		private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
    			// pour exemple : affiche la sélection dans une MessageBox
    			MessageBox.Show(comboBox1.SelectedItem.ToString());
    		}
    En espérant avoir rien raté, ou ne pas avoir répondu à côté de la plaque.

  3. #3
    Membre habitué

    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2011
    Messages : 115
    Points : 188
    Points
    188
    Par défaut Reponse au Question
    comme disait jopopmk, j'ai pas bien compris auusi le"seulement"
    Mais pour lister tous les disques sur le réseau, tu doit d'abord passer par un Socket pour accéder à une machine à distant, puis récupérer les disques sur cette machine (par la méthode de jopopmk par exe) renvoyer les résultats dans ton application, afficher dans le comboBox

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Salut jopopmk,
    Merci pour le bout de code qui me donne déjà un bon point de départ,
    si tu remarques dans les deux sous menu (à l'époque) j'ai pu mettre le disque graphique + nom Disque + UNC path (j'avais un composant en delphi pour faire ça). idem pour le listing fichier *.txt

    Pour être claire c'est de l'affichage.

    si tu as une idée ou quelque chose de similaire.

    Merci pour ton aide

    cordialement
    Images attachées Images attachées   

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Pour avoir les labels tu peux parcourir les DriveInfo (System.IO) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DriveInfo[] drives = DriveInfo.GetDrives();
    Tu pourras alors obtenir la lettre et le label dans ton foreach, comac:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string driveLetter = drive.Name;
    string driveLabel = (drive.IsReady) ? drive.VolumeLabel : "";
    Pour ce qui est de l'UNC ça se complique, il faut commencer par importer une fonctionnalité d'une DLL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("mpr.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    public static extern int WNetGetConnection([MarshalAs(UnmanagedType.LPTStr)] string localName, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder remoteName, ref int length);
    Puis dans ton foreach, tu te sers de cette fonction comac :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    StringBuilder sbUNC = new StringBuilder(255);
    int len = sbUNC.Capacity;
    WNetGetConnection(drive.Name.Replace("\\", ""), sbUNC, ref len);
    string driveUNC = sbUNC.ToString();
    En espérant avoir aidé, bon code

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Bonjour jopopmk,
    Ton code est top, c'est du lourd d'un point de vu complexité ...
    Pour info ça rame à la compile, je voulais aussi mettre aussi un icône graphique qui représente un disque réseau devant le lien.
    Je pensais qu'il existait quelque chose de plus simple.

    Encore merci pour ton aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2013, 11h05
  2. Lister tous les mois et années contenu dans une période
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/06/2011, 17h07
  3. lister tous les disques présents sur la machine
    Par contremaitre dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/08/2008, 18h56
  4. Réponses: 3
    Dernier message: 10/03/2008, 23h04
  5. [Tableaux] Lister tous les répertoires dans une liste
    Par cdevl32 dans le forum Langage
    Réponses: 10
    Dernier message: 01/03/2008, 19h20

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