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 :

"Clipboard.GetText()" ne marche pas dans un thread


Sujet :

Windows Forms

  1. #1
    Membre régulier

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut "Clipboard.GetText()" ne marche pas dans un thread
    Bonjour,
    tout est dis dans le titre, mais je m'explique comme même,
    j'aimerai contrôler mon presse papier à une tel sorte que lorsque je découvre qu'une certaine chaine de caractère est dans le presse papier, un événement se produit.

    voici un bout de code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void button11_Click_1(object sender, EventArgs e)
            {
                MessageBox.Show(Clipboard.GetText());
            }
    lors de l'appuie sur le bouton, j'arrive à lire le message,
    mon soucie c'est que j'aimerai créer un thread qui vérifie tout les 2 second mon presse papier, donc voici 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
     
    private Thread th_magnet_link;
    private void main_Load(object sender, EventArgs e)
             {
                 th_magnet_link = new Thread(new ThreadStart(magnet_link));
                 th_magnet_link.Start();
             }
     
    private void magnet_link()
            {
                while (Thread.CurrentThread.IsAlive)
                {
                    Thread.Sleep(2000);
                    MessageBox.Show(Clipboard.GetText());
                }
            }
    après exécution, une message box s'affiche avec un message vide à l'intérieur et qui m'empêche de lire le presse papier pour pouvoir ajouter des contrôles par la suite.

    AVIS AUX PROS et merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Le presse-papier repose sur COM, et n'est donc utilisable que depuis un thread STA. Il faut donc mettre ton thread en mode STA avant de le démarrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    th_magnet_link.SetApartmentState(ApartmentState.STA);

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

Discussions similaires

  1. Outlook ne marche pas dans mon réseau sous linux
    Par Germain123 dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 25/03/2006, 22h15
  2. Balise <PRE> marche pas dans un form
    Par chateau64 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/11/2005, 09h20
  3. aperçu d image avec input type file marche pas dans ffx
    Par siddh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h11
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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