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

Windows Forms Discussion :

[VC#] - Je ne comprends pas ou est mon erreur !


Sujet :

Windows Forms

  1. #1
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut [VC#] - Je ne comprends pas ou est mon erreur !
    Bonjour et merci par avance pour votre aide.

    Mon programme est écrit avec l'ancienne version de visual studio. Il fonctionne correctement sous XP. Il fait appel à une bdd placée sur un serveur.
    J'ai converti ce programme sous visual studio 2003. Il fonctionne sous vista après avoir retiré SHELL32.dll de ma solution.
    Mais sous XP via le serveur le programme fonctionne sauf pour l'utilisation de la fonction "exploration" qui explore les répertoires autorisés de mon serveur.
    Dans cette fonction il y a entre autre treeview, listview.

    Je ne peux pas utiliser le mode debug en pas à pas, car vs2003 est installé sur mon vista.

    Voici le message d'erreur lors de l'ouverture de cette fonction en fichier joint.
    Je ne parvient pas à interpréter ce qu'il ecrit.
    Merci.
    Images attachées Images attachées  

  2. #2
    Membre actif
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Points : 283
    Points
    283
    Par défaut
    Je crois que le message est assez explicite c'est le Shell32 que tu as enlevé qui empêche ton prog de tourner sous XP. A mon sens tu devrais essayer de trouver un autre composant COM qui soit compatible XP et Vista. Lors de l'appel à ce composant met le dans un try catch sa évitera ton prog de planter.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    quand on fait du .net, le mieux est de ne pas utiliser de composants COM
    (certes c'est parfois impossible, et je ne sais pas ce que fait ta dll mais .net fait deja pas mal de choses)

    le message d'erreur nous montre aussi que tu n'utilises pas de try catch

  4. #4
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci pour votre réponse.

    J'ai du lors de la création de mon programme avoir besoin de ce .com.
    Je ne me rappelle plus pour quelle fonction il est utile !!!
    Je vais remettre ce shell dans ma solution pour xp.

    Mais je ne sais pas comment trouver les fonctions déja réalisée dans .net.
    Je suis souvent obligé de recréer une fonction qui existe.
    Comment faites-vous pour avoir ces informations dans .net ?
    Comment faites-vous pour intégrer ces fonctions dans vos programmes ?

    J'utilise treeview pour montrer l'arborescence des répertoires et permettre d'effectuer des copies, coller, couper, impression de repertoires fils vers des répertoires parents (uniquement dans ce sens). Quelle fonctions .net sont disponibles.
    Si vous avez des idées ?

    Merci

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par epc Voir le message
    J'utilise treeview pour montrer l'arborescence des répertoires et permettre d'effectuer des copies, coller, couper, impression de repertoires fils vers des répertoires parents (uniquement dans ce sens). Quelle fonctions .net sont disponibles.
    Merci
    Tout ce qui est dans System.IO ... tu pourrai regarder sur la MSDN pour voir ce qui existe.
    Après tu peut t'inspirer de tutoriels ou d'exemples (comme ceux présent sur CodeProject) cf. http://www.codeproject.com/KB/cs/my_explorer.aspx

  6. #6
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Effectivement il y a des choses intéressante !

    Merci

    J'ai en fin retrouvé pourquoi j'avais besoin du shell32.dll (qui ne doit pas être la bonne version pour xp).
    C'est pour placer des icônes dans l'arborescence treeview et listeview devant les noms des répertoires ou des fichiers. C'est une partie que j'avais trouvée dans un exemple sur le web.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void InitializeIconFolder()
    {
      Shell32.Folder FolderShell = m_Shell.NameSpace(Shell32.ShellSpecialFolderConstants.ssfWINDOWS);
      Shell32.FolderItems items = FolderShell.Items();
      foreach(Shell32.FolderItem item in items)
      if (item.IsFolder)
      {
        m_IconFolder = ExtractIcon.GetIcon(item.Path, true);
        break;
      }
    }
    J'ai ensuite des fonctions qui sont liées ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void treeView1_AfterSelect()
    private void listView1_ItemActivate()
    private void FillLocalView(Shell32.Folder folder)
    private void AddViewItem(Shell32.FolderItem item, ref int idImage)
    Comment peut-on remplacer par .NET ?

    Merci pour votre aide.

    Complément.

    Les icônes devant les fichiers dans listview sont fonctions du type de fichiers.
    Ex : un fichier toto.doc a pour icônes, l'icône de word, ...

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344

  8. #8
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci pour ta réponse.
    Je modifie tout pour ne plus utiliser shell32.dll

    Mais j'ai un soucis :
    Il ne reconnait pas le fichier qui se trouve sur nom serveur (lors de la commande Icon.ExtractAssociatedIcon(file.FullName). Pourtant file.FullName pointe correctement sur le fichier de mon serveur (\\serv2003\partage\rep\dotnetfx.exe)

    Je ne sais pas ce qui ne va pas ????

    Si vous avez une idée elle sera la bienvenue !

    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
    foreach (FileInfo file in m_Root.GetFiles())
    {    
        ListViewItem item;
        try
        {
           Icon iconFile = SystemIcons.WinLogo;
           iconFile = Icon.ExtractAssociatedIcon(file.FullName);
           if (!imageList1.Images.ContainsKey(file.FullName))
           {
               iconFile = System.Drawing.Icon.ExtractAssociatedIcon(file.FullName);
               imageList1.Images.Add(file.Extension, iconFile);
           }
           item.ImageKey = file.Extension;
        }
        catch {}
        listView1.Items.Add(item);

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par epc Voir le message
    Mais j'ai un soucis :
    Il ne reconnait pas le fichier qui se trouve sur nom serveur
    Qu'est ce que tu entends par là ? Erreur de compilation ? Exception ?

  10. #10
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Je pense simplement que cette fonction n'a peut être pas été prévue pour ça ...
    Peut être qu'en passant directement avec l'api ExtractIcon ça marcherai.

    regarde ici : http://pinvoke/default.aspx/shell32/...iatedIcon.html

  11. #11
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Bonjour,
    Merci pour vos réponses.

    Il s'agit bien d'une erreur d'exception :
    La valeur de '\\SERV2003\facile\Perso\AJUO-RPL\configuration.ini' n'est pas valide pour 'filePath'.
    Il trouve pourtant correctement le fichier configuration.ini dans le répertoire coté serveur.

    Pour smyley
    Je souhaite ne pas utiliser la dll shell32, car elle est différente entre xp pro et vista.
    Le lien que tu me donnes n'est pas correcte.

  12. #12
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par epc Voir le message
    Pour smyley
    Je souhaite ne pas utiliser la dll shell32, car elle est différente entre xp pro et vista.
    Le lien que tu me donnes n'est pas correcte.
    Tout d'abord les fonctions exportées par shell32.dll restent globalement les mêmes et par exemple ExtractIcon n'a pas changé. C'est tes jeux bizarres avec le shell qui créaient une incompatibilité car cette dll n'a jamais été prévue pour être incorporée dans une solution (ie. redistribuée avec ton projet) et c'est pour ça que ça marche si tu retires la dll de ta solution. C'est heureux de vouloir s'abstenir de l'utilisation d'une dll tel que shell32.dll sur Windows, tout en sachent que le framework l'utilise de manière massive.
    Ensuite, le lien est valide, peut être qu'il faut te tu essayes de l'ouvrir plusieurs fois mais moi je n'ai aucun problème. Voici ce qu'il contient :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [DllImport("shell32.dll")]
    static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
       out ushort lpiIcon);
    à utiliser par exemple comme ceci :
    Code c# : 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
    23
    24
    25
    26
        public partial class IconTest : Form
        {
        [DllImport("shell32.dll")]
        static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
           out ushort lpiIcon);
     
        [DllImport("shell32.dll")]
        static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
     
        public IconTest()
        {
            InitializeComponent();
        }
     
        private void btnBrowse_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
     
            ushort uicon;
            StringBuilder strB = new StringBuilder(openFileDialog1.FileName);
            IntPtr handle = ExtractAssociatedIcon(this.Handle, strB, out uicon);
            Icon ico = Icon.FromHandle(handle);
     
            pictureBox1.Image = ico.ToBitmap();
        }
        }

    ps. bien sur que les dlls changent entre les versions de Windows, mais à mon avis tu n'as pas vraiment compris comment t'en servir et comment le tout fonctionne. Tu devrais peut être regarder quelques tutoriels sur les Api Windows.

  13. #13
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci

    ps. bien sur que les dlls changent entre les versions de Windows, mais à mon avis tu n'as pas vraiment compris comment t'en servir et comment le tout fonctionne.
    C'est bien la mon problème. Il me manque une vue d'ensemble. Alors je suis obligé de galérer ... Mais j'y arrive !!!

    Bref ...
    N'y a t il pas une solution à cette exception (La valeur de '\\SERV2003\facile\Perso\AJUO-RPL\configuration.ini' n'est pas valide pour 'filePath'.
    Il trouve pourtant correctement le fichier configuration.ini dans le répertoire coté serveur) ???
    L'erreur est due à une info manquante, laquelle ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iconFile = Icon.ExtractAssociatedIcon(file.FullName);
    J'ai regardé filePath en mode debug. Il a bien le bon chemin !
    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
    foreach (FileInfo file in m_Root.GetFiles())
    {    
        ListViewItem item;
        try
        {
           Icon iconFile = SystemIcons.WinLogo;
           iconFile = Icon.ExtractAssociatedIcon(file.FullName);
           if (!imageList1.Images.ContainsKey(file.FullName))
           {
               iconFile = System.Drawing.Icon.ExtractAssociatedIcon(file.FullName);
               imageList1.Images.Add(file.Extension, iconFile);
           }
           item.ImageKey = file.Extension;
        }
        catch {}
        listView1.Items.Add(item);
    Merci pour votre aide.

  14. #14
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Essayes directement avec le code que je t'ai donné, cf.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [DllImport("shell32.dll")]
        static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
           out ushort lpiIcon);
     
        [DllImport("shell32.dll")]
        static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);

    Je ne sais pas si ça va marcher mais bon ...

  15. #15
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Je ne suis pas contre, mais je ne sais pas comment l'intercaller dans mon code !

  16. #16
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    ça doit être un truc genre :
    Code c# : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    ...
        [DllImport("shell32.dll")]
        static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
           out ushort lpiIcon);
     
        [DllImport("shell32.dll")]
        static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
     
     
    ...
    foreach (FileInfo file in m_Root.GetFiles())
    {    
        ListViewItem item;
        try
        {
           Icon iconFile = SystemIcons.WinLogo;
     
            if(imageList1.Images.ContainsKey(file.FullName))
              iconFile = imageList1.Images.ContainsKey(file.FullName)
            else {
            ushort uicon;
            StringBuilder strB = new StringBuilder(file.FullName);
            IntPtr handle = ExtractAssociatedIcon(this.Handle, strB, out uicon);
            Icon ico = Icon.FromHandle(handle);
     
            iconFile = ico.ToBitmap();
     
            imageList1.Images.Add(file.FullName, iconFile);
           }
           item.ImageKey = imageList1.Images[file.FullName];
        }
        catch {}
        listView1.Items.Add(item);

    je crois que je me suis perdu ...

  17. #17
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Mon code

    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
    23
    24
    25
    26
    foreach (FileInfo file in m_Root.GetFiles())
    {    
      itemtablez[0] = file.Name.ToString();
      itemtablez[1] = Convert.ToString(file.Length / 1024) + " Ko";
      itemtablez[2] = file.CreationTime.ToString();
      itemtablez[3] = file.LastWriteTime.ToString();
     
      Icon iconFile = SystemIcons.WinLogo;
      ListViewItem item = new ListViewItem(itemtablez, 0);
     
      try //pour l'icone
      {
          iconFile = Icon.ExtractAssociatedIcon(file.FullName);
          if (!imageList1.Images.ContainsKey(file.FullName))
          {
             iconFile = System.Drawing.Icon.ExtractAssociatedIcon(file.FullName);
             imageList1.Images.Add(file.Extension, iconFile);
          }
          item.ImageKey = file.Extension;
       }
       catch
       {
              //sans icone
       }
       listView1.Items.Add(item);
    }

  18. #18
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Toi aussi tu t'es perdu tien :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    iconFile = Icon.ExtractAssociatedIcon(file.FullName);
          if (!imageList1.Images.ContainsKey(file.FullName))
          {
             iconFile = System.Drawing.Icon.ExtractAssociatedIcon(file.FullName);
    ces lignes n'ont pas de sens.
    Normalement c'est
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(imageList1.Images.ContainsKey(file.FullName))
     iconFile = imageList1.Images[file.FullName];
    else {
     iconFile = ExtractBidule ...
     imageList1.Images[file.FullName] = iconFile
    }

  19. #19
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Ok - Nos messages se sont croisés.
    J'ai intégré ton code dans le mien, mais j'ai une erreur : (Le type ou le nom d'espace de noms 'StringBuilder' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [DllImport("shell32.dll")]
        static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
           out ushort lpiIcon);
    Je ne sais pas à quoi correspond StringBuilder !
    Mes directives sont les suivantes :
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.IO;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Resources;

  20. #20
    epc
    epc est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    J'avance ...
    J'ai r'ajouté la directive using System.Text; C'est bon.
    Mais j'ai un nouveau message d'erreur.

    Impossible de convertir implicitement le type 'System.Drawing.Bitmap' en 'System.Drawing.Icon'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iconFile = ico.ToBitmap();

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Je ne trouve pas ou est l'erreur dans mon programme
    Par stich51 dans le forum Général Python
    Réponses: 3
    Dernier message: 02/05/2014, 16h36
  2. Je ne comprends pas ou est l'erreur
    Par Nicobp dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/05/2013, 15h16
  3. je ne comprends pas les message d'erreur g++
    Par emmesse dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 22/09/2006, 16h52
  4. Où est mon erreur ?
    Par Fusio dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 17h29
  5. Réponses: 13
    Dernier message: 30/01/2006, 14h21

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