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 :

[2.0] Refaire Copier/Coller


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 67
    Par défaut [2.0] Refaire Copier/Coller
    Bonjour à tous,

    Alors voilà je doit faire une petit application qui à tout d'une grande car cette application doit réinventer le copier/coller.

    L'utilisateur est dans un éditeur de texte et sélectionne un mot, lors de l'appuie sur une touche(ou plusieurs) mon application va donc faire un copier, trouvez l'équivalent dans un dictionnaire pour enfaite changer la valeur du presse papier, puis coller à la place.

    Pour le raccourci et le changement du presse papier cela fonctionne nikel avec un hook, voir super source http://www.codeproject.com/KB/cs/globalhook.aspx.

    Ce qui me pose problème à l'heure actuelle, c'est de simuler le copier/coller, je pense que c'est possible mais alors comment faire, j'en ai aucune idée, et ma recherche google et msdn ne donne rien.

    Donc si vous avez une idée, n'hésitez pas,

    Merci d'avance

    [EDIT] ps: cette application tournera donc en arrière plan, et n'aura pas de form

  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 : 43
    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
    Par défaut
    si tu peux récupérer un handle vers le contrôle qui a le focus quand la touche de raccourci est activée, tu peux envoyer des messages WM_COPY et WM_PASTE.
    Mais à mon avis, plutôt que d'utiliser le presse-papier (ce qui va gêner l'utilisateur s'il l'utilise aussi), il vaut mieux manipuler directement le texte sélectionné dans le contrôle, avec les messages EM_GETSEL et EM_SETSEL

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 67
    Par défaut
    Ok merci pour ta réponse, je vais me renseigner à ce sujet, c'est encore mieux si c'est possible, comme çà je ne gène pas le presse-papier de l'utilisateur.

  4. #4
    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 : 43
    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
    Par défaut
    tu auras besoin de ça pour envoyer des messages au contrôle :
    http://pinvoke.net/default.aspx/user32/SendMessage.html

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 67
    Par défaut
    Je doit avouer que je suis un peu perdu et çà dépasse mes compétences actuelles. Je li plein de chose intéressante sur le sujet, et çà m'aide à mieux comprendre comment cela fonctionne.

    Mais je n'arrive pas à utiliser la fonction SendMessage, voici mon code actuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    //Code executer lorsque l'utilisateur appuie sur la touche F7
    IntPtr dlgHandle = GetForegroundWindow();
    string strSelect = ???SendMEssage(???)???
    //il y aura une manipulation sur la variable selection
    SendKeys.Send(selection);
    Voici les ajouts en bas de page
    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
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
    static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
     
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr GetForegroundWindow();
    enum GetWindow_Cmd : uint
    {
                GW_HWNDFIRST = 0,
                GW_HWNDLAST = 1,
                GW_HWNDNEXT = 2,
                GW_HWNDPREV = 3,
                GW_OWNER = 4,
                GW_CHILD = 5,
                GW_ENABLEDPOPUP = 6
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 67
    Par défaut
    Voici mon code apres quelques recherches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
            static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);
    Car j'aimerais récupérer la selection donc dans un string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    const uint EM_GETSEL = 0xb0;
    //L'utilisateur à appuyé sur F7 
    IntPtr dlgHandle = GetForegroundWindow();
    StringBuilder arg2= new StringBuilder();
    string test = SendMessage(HandleRef.ToIntPtr(new HandleRef(null,dlgHandle)), EM_GETSEL, IntPtr.Zero, arg2).ToString();
    SendKeys.Send(dlgHandle.ToString());
    Cela viens peut etre de ma façon de récupérer le handle de la fenetre active.

    Tout çà me surpasse et je ne comprend pas tout ce que je fait, et pourtant j'ai envi de comprendre maintenant que j'ai vu que l'on pouvait faire tant de chose avec çà.

    Je retourne m'arracher les cheveux dessus

  7. #7
    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 : 43
    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
    Par défaut
    bon, faut dire que WM_GETTEXT c'est pas très évident à manipuler... Il y a aussi une fonction Win32 GetWindowText, plus pratique :
    http://pinvoke.net/default.aspx/user...indowText.html

    Cela viens peut etre de ma façon de récupérer le handle de la fenetre active.
    euh... c'est quoi, "cela" ? tu n'as pas dit quel était le problème avec ce code

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

Discussions similaires

  1. [VB.NET] copier coller d'une valeur
    Par mic56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2004, 11h43
  2. [Swing]copier coller... dans le menu.
    Par parksto dans le forum Composants
    Réponses: 3
    Dernier message: 10/05/2004, 22h56
  3. Copier coller Fichier windows
    Par KPitN dans le forum Windows
    Réponses: 8
    Dernier message: 20/04/2004, 17h32
  4. Copier Coller une ligne d'une table avec modif ?
    Par nolan76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/03/2004, 16h34
  5. [Débutant] Conserver la couleur lors d'un copier coller
    Par ADIDASman dans le forum JBuilder
    Réponses: 2
    Dernier message: 21/05/2003, 18h13

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