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 Discussion :

Simuler l'appui de touche sur une fenêtre précise sous windows


Sujet :

Windows

  1. #1
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut Simuler l'appui de touche sur une fenêtre précise sous windows
    Bonjour,
    Je voudrais savoir si il exisait un moyen de simuler l'apuit d'une touche, dans un autre programme, grace aux fonctions présente dans window.h ou une quelquonque autre libraire.

    (En espérent voir poster dans le bon forum )
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    SendMessage/PostMessage
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je crois que la méthode conseillée, c'est SetForegroundWindow() + SendInput()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    D'accord merci, je vias chercher de ce coté là et je prévien si j'ai un problème

    (Nb : J'avais bien poster dans le movais forum >_<)

    Edit : Euh bon je suis complètement perdu ^^ Alors, j'ai crus comrpendre qu'il falais déjà capturer la fenêtre cible via FindWindow(). J'ai esseiller donc :
    HWND hFore = FindWindow(0,(LPCWSTR)"Sans titre - Bloc-notes");
    Mais j'obtien un pointeur null >_< (Oui j'ai pensser à ouvrir le bloque note avent)

    Ensuite, je n'arive pas à trouver grand chose sur les fonctions SetForegroundWindow et SendInput. J'ai seulement trouver que SetForegroundWindow passe la fenêtre au premier plan si j'ai bien comprit. Mais seulement je voudrais pouvoir simuler une touche du clavier, sans pour autant lui doner le focus

    Bref, si vous aviez un petit exemple ou un article qui traite du sujet sa m'aiderai beaucoup
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Aie c'est compliqué à faire en plus il faut utiliser des structures ATOM je crois.
    On peut utiliser FindWindow sinon tu peux avec les API déterminer les processus en exécutions et obtenir les handles.
    Après avoir obtenu le handle on peut prendre effectivement envoyer des messages avec SendMessage.

    Prendre FindWindowEx plutot que FindWindow
    http://msdn.microsoft.com/library/de...ndwindowex.asp

    An application can call this function in the following way.

    FindWindowEx( NULL, NULL, MAKEINTATOM(0x8000), NULL );

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par JC_Master
    Edit : Euh bon je suis complètement perdu ^^ Alors, j'ai crus comrpendre qu'il falais déjà capturer la fenêtre cible via FindWindow(). J'ai esseiller donc :
    Mais j'obtien un pointeur null >_< (Oui j'ai pensser à ouvrir le bloque note avent)
    Chercher une fenêtre (principale) par son titre est quelque peu aléatoire : la plupart des applications n'ont pas un texte prédéfini et constant dans leur barre de titre (sans parler des espacements).

    Je te conseillerais plutôt d'énumérer toutes les fenêtres principales en cours et d'analyser leurs titres afin d'identifier celle(s) qui t'intéresse(nt).

    Ensuite un SetFocus() et un SendMessage()/PostMessage() (faire des essais avec WM_KEYDOWN, WM_KEYUP, WM_CHAR) sur le handle trouvé devraient faire l'affaire.
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  7. #7
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par mat.M
    Aie c'est compliqué à faire en plus il faut utiliser des structures ATOM je crois.
    On peut utiliser FindWindow sinon tu peux avec les API déterminer les processus en exécutions et obtenir les handles.
    Après avoir obtenu le handle on peut prendre effectivement envoyer des messages avec SendMessage.

    Prendre FindWindowEx plutot que FindWindow
    http://msdn.microsoft.com/library/de...ndwindowex.asp
    Euh bon je suis pas douer du tout en anglais donc un eut dure pour moi de comprendre les explications de msdn >_<

    Donc, si j'ai comprit, FindWindowEx selectione une fenêtre via un code hexadécimal, mais il faut déjà trouver le code qui corespond, par exemple, au bloque note... Si je n'arive déjà pas à récupèrer un pointeur sur la fenêtre je suis pas pret d'ariver à envoiller une sucession de caractère
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Un petit coup de spy++ (Non-fourni avec la version express) nous informe que la classe de fenêtre du bloc-note est "Notepad" (et non, ce n'est pas le titre).

    Donc, un FindWindow("Notepad", NULL); trouvera UNE fenêtre du bloc-note.

    Avec un petit EnumWindows()+GetClassName()/GetWindowThreadProcesId(), on peut retrouver la fenêtre DU bloc-note qu'on vient de lancer...

    Surtout si on précède la recherche d'un petit WaitForInputIdle()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Oui mais sa fonctione toujours pas >_< (Pointeur nule en retour de FindWindow)

    Sinon je voudrais savoir coment trouver le nom de la classe sans avoir Spy++ Coique vu que ca ne marche déjà pas avec le bloque note...
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  10. #10
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par JC_Master
    Oui mais sa fonctione toujours pas >_< (Pointeur nule en retour de FindWindow)
    ..
    C'est parce que le paramêtre passé à FindWindow est mauvais ; il faut prendre Spy++ donné en exemple par Medinoc , relever le handle de fenêtre le noter sur un bout de papier et voir en déboguage si tu obtiens le même.

  11. #11
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par mat.M
    C'est parce que le paramêtre passé à FindWindow est mauvai
    C'est exactement celui doner par mériado (J'ai ausi tester "NOTEPAD" et "notepad")
    Citation Envoyé par mat.M
    il faut prendre Spy++
    Pour ca il faut déjà l'avoir...
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    As-tu essayé FindWindow(TEXT("Notepad"), NULL); ?
    (Oui, j'avais oublié le TEXT() avant. Si tu passes (LPCTSTR)"Notepad", y'a de fortes chances que ce soit normal si ça foire).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par Médinoc
    Si tu passes (LPCTSTR)"Notepad", y'a de fortes chances que ce soit normal si ça foire).
    Ahhh Effectivement je fesait ca

    Voila, ca marche

    Bon, il ne reste plu qu'a ecrire le programe, utiliser les autres fonction cite, débugguer, coriger... Bref, au boulot

    Petite question, comme vous vou en doutez le bute n'est pas de se servire de notpad, mais d'un autre programe ^^ Existe t'il un programe avec les mêmes fonctionalitées de py++?

    Edit : J'arive a fermer la fenêtre avec SendMessage(hFore,WM_CLOSE, NULL, NULL); et donc si je veut envoilelr une lêtre je peut utilier SendMessage(hFore,WM_CHAR, 'z', NULL); ?
    (D'aprè ce que j'ai comprit j'ai le pointeur vers la fenêtre de notepad, mais pas vers le champ de texte, mais pou le programme ou ca doit s'apliquer je n'ai pa besoin de selectioner un compoant dans la fenêtre, bien que je suis cureieu de avoir comment faire ^^)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    WM_CHAR ne peut être envoyé.
    WM_KEYDOWN/WM_KEYUP le peuvent, mais des touches comme SHIFT ne passent pas (j'avais essayé, les caractères reçus étaient toujours en minuscules).


    Edit: Au fait, de manière générale, on ne caste JAMAIS une chaîne littérale en LPxxSTR. Si ça ne rentre pas tout seul, c'est que la chaîne n'est pas au bon format.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par Médinoc
    WM_CHAR ne peut être envoyé.
    WM_KEYDOWN/WM_KEYUP le peuvent, mais des touches comme SHIFT ne passent pas (j'avais essayé, les caractères reçus étaient toujours en minuscules).
    Ok, je vois si j'arive à faire quelque chose avec ca ^^


    Citation Envoyé par Médinoc
    Edit: Au fait, de manière générale, on ne caste JAMAIS une chaîne littérale en LPxxSTR. Si ça ne rentre pas tout seul, c'est que la chaîne n'est pas au bon format.
    Ok c'et que parfois avec les redéfinition de types je me retrouve à caster, et comme la programation window n'est pas mon fort... ^^


    Sinon conaissez vous un programme similaire à Spy++ ?

    Edit : j'ai trouver ceci :
    http://tcharles.developpez.com/simul/

    Je vais esseiller d'en tirer le maximume ^^
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je ne connais aucun programme similaire à spy++, mais il m'est déjà arrivé de faire un programme en ligne de commande qui affiche la liste de toutes les fenêtres ouvertes, visibles ou non (mais pas les contrôles).

    Je ne connais pas de fonction, mais je connais un message: WM_MOUSEMOVE, WM_LBUTTONDOWN,WM_MOUSEWHEEL etc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Alors, je me débroille plutot bien ^^ J'ai trouver un programme qui me permet d'avoir de nombreuses informatiosn d'on celle qu'il me falais dnas Spy++, j'ai réusi à prendre le controle de la souris et du clavier, et a envoiller un texte avec des SendMessage
    Alors, pour le moment je bloque sur le fait que WM_MOUSEWHEEL n'est pas défini, a cause de la macro :
    #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
    #define WM_MOUSEWHEEL 0x020A
    #endif
    Qui est griser sous visual c++ (Oh que c'est pratique la coloration syntaxique ^^)

    J'aimerait pouvoir envoiller un message d'évènement de la souri sans pourtant qu'elle soit réèlement déplacer, et je voulais savoir si je devais passer par un autre moyen que selui décrit sur http://tcharles.developpez.com/simul/ ^^
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  18. #18
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  19. #19
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par Médinoc
    Atchoum! Désoler, mon alergie a l'anglai qui me reprend
    (J'ai vraiment rien comprit à part que ca parle des macros qui varien en fonction des vertions de window... Et je comprend encore mieu sans la traduction de google ^^)
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  20. #20
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    C'est juste que si tu mets #define _WIN32_WINNT 0x400 avant d'inclure windows.h, ça marche.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2014, 00h43
  2. probleme avec l'appui sur une touche sur une jframe ou jdialog
    Par jeanfeu dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/08/2008, 16h14
  3. simuler l'appui de touches
    Par polo42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/07/2006, 11h47
  4. Simuler un appui de touche clavier
    Par Floo dans le forum Assembleur
    Réponses: 5
    Dernier message: 03/12/2004, 17h04
  5. Simuler l'appui de touches
    Par immerczeck dans le forum Assembleur
    Réponses: 5
    Dernier message: 21/04/2004, 17h23

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