Utiliser un copier coller par le biais d'un bouton

Résolu
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011 - 16 juin 2008 à 09:14
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011 - 29 janv. 2009 à 16:43
Bonjour à tous,
Je code vb.net et en fait, je souhaiterais grâce à un bouton  copier un nom d'utilisateur et un mot de passe qui se trouvent dans des TextBox.
Cette copie me permettrait ensuite de coller tout d'abord le nom d'utilisateur à l'endroit voulu grâce à un premier double click, et ensuite de coller le mot de passe grâce à un second double click...
Si quelqu'un sait comment faire ou à une idée pour m'aiguiller ?!
Merci d'avance

13 réponses

GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
29 janv. 2009 à 16:05
Salut Salut !!!! Bon et bien c'est bon j'ai réussi ^^ Alors je vais donner la "solution complète" qui pourra surement aider quelqu'un un jour :)

Public Class frm_MemoPassV2

    'Déclaration de la variable permettant la sortie de l'application

    Friend WithEvents MouseHook As New WindowsHookLib.LLMouseHook

    'Déclaration de variable permettant d'effectuer le copier coller des bonnes informations,

    'car elles me permettent de savoir si un élément est collé et si je dois passer au suivant ou non.

    Private Coller_NumClient As Boolean = False

    Private Coller_Identifiant As Boolean = False

    Private Coller_MotdePasse As Boolean = False

    'Constante permettant de coller le message copier,

    Const WM_GETTEXT As Integer = &HC

    'Variable permettant de savoir quel est la prochaine donnée à coller,

    Private m_DoubleClic As t_DoubleClic

    Private Enum t_DoubleClic

        Premier = 0

        Deuxieme = 1

        Troisieme = 2

    End Enum

Public Sub BtnCopierColler_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCopierColler.Click

        Try

            'Si les champs sont remplies,
            If TxtBoxIdentifiant.Text "" OrElse TxtBoxMotdepasse.Text "" Then

                MessageBox.Show("Il est impossible d'effectuer la copie, nom d'utilisateur ou/et mot de passe manquant", "Copie Impossible", MessageBoxButtons.OK, MessageBoxIcon.Error)

            Else

                'On installe le mouse hook

                MouseHook.InstallHook()

            End If

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

    End Sub

Private Sub MouseHook_MouseDoubleClick(ByVal sender As System.IntPtr, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MouseHook.MouseDoubleClick

        'Si c'est le premier double click,

        If m_DoubleClic = t_DoubleClic.Premier Then

            'Si la textbox du numéro client n'est pas vide,

            If TxtBoxNumCli.Text <> "" Then

                'On ajoute le numéro client dans le presse papier,

                My.Computer.Clipboard.SetText(TxtBoxNumCli.Text)

                'On colle le numéro client à l'endroit du double click,

                SendMessage(sender, WM_GETTEXT, 0, TxtBoxNumCli.Text)

                SendKeys.Send("^(v)")

                'Et on indique que le prochain double click sera le deuxième

                m_DoubleClic = t_DoubleClic.Deuxieme

                'On vérifie que les Textbox Identifiant et Motdepasse ne sont pas vide sinon on ferme le mousehook,
                If TxtBoxIdentifiant.Text "" And TxtBoxMotdepasse.Text "" Then

                    MouseHook.RemoveHook()

                    m_DoubleClic = t_DoubleClic.Premier

                End If

                Exit Sub

            Else

                'On indique que le prochain double click sera le deuxième,

                m_DoubleClic = t_DoubleClic.Deuxieme

            End If

        End If

        'Si c'est le deuxième double click,

        If m_DoubleClic = t_DoubleClic.Deuxieme Then

            'Si la textbox de l'identifiant n'est pas vide,

            If TxtBoxIdentifiant.Text <> "" Then

                'On ajoute le nom d'utilisateur dans le presse papier,

                My.Computer.Clipboard.SetText(TxtBoxIdentifiant.Text)

                'On colle le nom d'utilisateur à l'endroit du double click,

                SendMessage(sender, WM_GETTEXT, 0, TxtBoxIdentifiant.Text)

                SendKeys.Send("^(v)")

                'Et on indique que le prochain double click sera le troisième

                m_DoubleClic = t_DoubleClic.Troisieme

                'On vérifie que la Textbox Motdepasse n'est pas vide sinon on ferme le mousehook,

                If TxtBoxMotdepasse.Text = "" Then

                    'On ferme le mousehook

                    MouseHook.RemoveHook()

                    m_DoubleClic = t_DoubleClic.Premier

                End If

                Exit Sub

            Else

                'On indique que le prochain double click sera le troisième,

                m_DoubleClic = t_DoubleClic.Troisieme

            End If

        End If

        'Si c'est le troisième double click,

        If m_DoubleClic = t_DoubleClic.Troisieme Then

            'Si la textbox du mot de passe n'est pas vide,

            If TxtBoxMotdepasse.Text <> "" Then

                'On ajoute le mot de passe dans le presse papier,

                My.Computer.Clipboard.SetText(TxtBoxMotdepasse.Text)

                'On colle le mot de passe à l'endroit du double click,

                SendMessage(sender, WM_GETTEXT, 0, TxtBoxMotdepasse.Text)

                SendKeys.Send("^(v)")

                'On initialise la variable

                m_DoubleClic = t_DoubleClic.Premier

            Else

                'On initialise la variable

                m_DoubleClic = t_DoubleClic.Premier

                'On ferme le mousehook

                MouseHook.RemoveHook()

            End If

        End If

        'On ferme le mousehook

        MouseHook.RemoveHook()

        m_DoubleClic = t_DoubleClic.Premier

    End Sub

End Class

 
3
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
29 janv. 2009 à 16:43
Vous pouvez également retirer l'instruction suivante au niveau des trois doubleclic, car elle se trouve être inutile :

SendMessage(sender, WM_GETTEXT, 0, TxtBoxNumCli.Text)

Peace !

 
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
16 juin 2008 à 09:33
' dur dur ,
' 2 exemples :
' 1         avec le presse-papiers


My
.Computer.Clipboard.SetText(textbox1.text)


My
.Computer.Clipboard.GetText(TextBox2.Text)' 2         sans le presse papiers

TextBox2.Text = TextBox1.Text
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
16 juin 2008 à 09:49
Je te remercie, mais je ne pense pas que tu est réellement compris ce que je désirais. Je ne souhaite pas coller le texte d'une textbox dans une autre.
Mon application enregistre tout les mots de passes et nom d'utilisateurs que je peux avoir.
Par exemple, disons que j'ai un compte ebay qui est  identifiant : fgarnier, mot de passe : mdp, je souhaite que après avoir clicker sur mon bouton, je récupère ces deux informations (le code que tu à écrit correspondant à cela je pense), et il me suffit de faire un double click  sur la zone de saisi du pseudo de la page ebay pour coller fgarnier, et un double click sur la zone de saisi du mot de passe pour coller mdp.
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
19 juin 2008 à 10:04
Bon j'ai un petit peu avancé depuis la derniere fois...
'Déclaration des variables

Friend
WithEvents MouseHook
As
New WindowsHookLib.LLMouseHook

Const WM_GETTEXT
As
Integer = &HC

Public
Sub BtnCopierColler_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles BtnCopierColler.Click

Try

'Si les champs ne sont pas remplies,

If TxtBoxIdentifiant.Text =
""
OrElse TxtBoxMotdepasse.Text =
""
ThenMessageBox.Show(

"Il est impossible d'effectuer la copie, nom d'utilisateur ou/et mot de passe manquant",
"Copie Impossible", MessageBoxButtons.OK, MessageBoxIcon.Error)

Else

'On installe le mouse hookMouseHook.InstallHook()

End
If

Catch ex
As ExceptionMessageBox.Show(ex.Message)

End
Try

End
Sub

Private
Sub MouseHook_MouseDoubleClick(
ByVal sender
As System.IntPtr,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles MouseHook.MouseDoubleClick

My.Computer.Clipboard.SetText(TxtBoxIdentifiant.Text)

For i
As
Integer = 0
To TxtBoxIdentifiant.Text.Length - 1SendMessage(sender, WM_GETTEXT, Asc(TxtBoxIdentifiant.Text.Substring(i, 1)), TxtBoxIdentifiant.Text)

Pour le MouseHook, vous obtiendrez des explications sur le lien suivant : http://69.10.233.10/KB/vb/WindowsHookLib.aspx C'est ce qui permet de sortir de l'application, et dc pour moi de faire le double click en dehors de la form en cours.
Voila ce à quoi je suis arriver( je vous met le code pour l'identifiant seulement, si çà marche pour un çà marche pour deux)... Malheureusement, mon nom d'utilisateur est bien coller au double click, mais seulement dans le bloc note de windows :(
Alors quelqu'un serait-il capable de me donner un coup de main ? Pasque j'avouerai que je commence à satturer :$ ^^
Merci à tous ceux qui pourraient ne serait-ce que me donner une piste
Peace

 
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
19 juin 2008 à 10:05
Oups :$ J'ai omit la déclaration du SendMessage :

Public
Declare
Function SendMessage
Lib
"user32.dll"
Alias
"SendMessageA" (
ByVal hWnd
As IntPtr,
ByVal Msg
As
Integer,
ByVal ByValByValwParam
As
Integer,
ByVal lParam
As
String)
As
IntegerMerci a tous ! Peace

 
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
20 juin 2008 à 14:25
For
i


As





Integer

= 0


To

TxtBoxIdentifiant.Text.Length - 1
SendMessage(sender, WM_GETTEXT, Asc(TxtBoxIdentifiant.Text.Substring(i, 1)), TxtBoxIdentifiant.Text)

Je peux remplacer ce bout de code par :

SendMessage(sender, WM_GETTEXT, 0, TxtBoxIdentifiant.Text)
ou par :
SendMessage(sender, WM_GETTEXT, Asc(TxtBoxIdentifiant.Text.Substring(0, 1)), TxtBoxIdentifiant.Text)

Je ne sais pas si il y a une instruction mieux que l'autre, car j'arrive au même résultat avec les trois.
Donc du coup si quelqu'un sait si l'une est mauvaise, ou est mieu que les deux autres çà m'intéresse :$
Dans l'attente d'une aide, Merci a tous
Peace
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
23 juin 2008 à 15:38
J'ai de nouveaux modifier quelques petites choses, mais je n'arrive toujours que à coller dans le bloc note de windows..
Mon nouveau code est le suivant :

Private

m_DoubleClic As
t_DoubleClic

Private
Enum
t_DoubleClic
Premier = 0
Deuxieme = 1
Troisieme = 2
EndEnum

Private
Sub MouseHook_MouseDoubleClick(ByVal sender As System.IntPtr, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MouseHook.MouseDoubleClick

'Si c'est le premier double click,

      If  m_DoubleClic = t_DoubleClic.Premier Then
            'Si la textbox du numéro client n'est pas vide,

            If TxtBoxNumCli.Text <> ""Then
               'On ajoute le numéro client dans le presse papier,

               My.Computer.Clipboard.SetText(TxtBoxNumCli.Text)
               'On colle le numéro client à l'endroit du double click,

               SendMessage(sender, WM_GETTEXT, 0, TxtBoxNumCli.Text)
               'Et on indique que le prochain double click sera le deuxième

               m_DoubleClic = t_DoubleClic.Deuxieme
               'On vérifie que les Textbox Identifiant et Motdepasse ne sont pas vide sinon on ferme le mousehook
               If TxtBoxIdentifiant.Text ""And TxtBoxMotdepasse.Text ""Then

                     MouseHook.RemoveHook()
               EndIf

               ExitSub
           Else
               'On indique que le prochain double click sera le deuxième,

                 m_DoubleClic = t_DoubleClic.Deuxieme
           EndIf

     EndIf

      'Si c'est le deuxième double click,

            If
m_DoubleClic = t_DoubleClic.Deuxieme Then
            'Si la textbox de l'identifiant n'est pas vide,

                  If TxtBoxIdentifiant.Text <> ""Then
                        'On ajoute le nom d'utilisateur dans le presse papier,

                        My.Computer.Clipboard.SetText(TxtBoxIdentifiant.Text)
                        'On colle le nom d'utilisateur à l'endroit du double click,

                        SendMessage(sender, WM_GETTEXT, 0, TxtBoxIdentifiant.Text)
                       'Et on indique que le prochain double click sera le troisième

                        m_DoubleClic = t_DoubleClic.Troisieme
                        'On vérifie que la Textbox Motdepasse n'est pas vide sinon on ferme le mousehook,

                        If TxtBoxMotdepasse.Text = ""Then
                        'On ferme le mousehook

                              MouseHook.RemoveHook()
                        EndIf

                        ExitSub
                  Else
                        'On indique que le prochain double click sera le troisième,

                          m_DoubleClic = t_DoubleClic.Troisieme
                  EndIf

         EndIf

      'Si c'est le troisième double click,

        If
m_DoubleClic = t_DoubleClic.Troisieme Then
            'Si la textbox du mot de passe n'est pas vide,

            If TxtBoxMotdepasse.Text <> ""Then
                  'On ajoute le mot de passe dans le presse papier,

                  My.Computer.Clipboard.SetText(TxtBoxMotdepasse.Text)
                  'On colle le mot de passe à l'endroit du double click,

                  SendMessage(sender, WM_GETTEXT, 0, TxtBoxMotdepasse.Text)
                  'On initialise la variable

                  EndIf

                  EndIf
                  'On ferme le mousehook

         MouseHook.RemoveHook()
EndSub

Le code du bouton copier/coller reste le même.
Merci pour ceux qui pourront m'aider.
Peace
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
23 juin 2008 à 15:44
Mince, encore désolé. Je souhaite juste préciser que j'ai rajouté un numéro client en plus de l'identifiant et du mot de passe, d'où l'instruction du premier double click...
Le code marche bien, il n'y a aucune erreur, lorsque je double click sur le bloc note, le numéro client est collé, au second double click l'identifiant est collé et enfin au troisième double click le mot de passe est lui aussi collé.
Voila, merci d'avance ^^
Peace

 
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
23 juin 2008 à 15:50
pourquoi coller dans le block notes ???


quand tu as toutes tes infos tu mets ça dans un fichier texte puis tu ouvres le fichier avec le block notes


sinon tu peux toujours ouvrir le block notes lui passer le focus et lui envoyer un SsendKeys.Send( "^ v" )
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
23 juin 2008 à 16:04
Je colle dans le bloc note seulement pour tester mon code, mais je ne souhaite pas le coller dedans, c'est juste le seul endroit ou la copie se fait au doubleclick(sinon elle marche n'importe ou avec ctrl+v ou click droit coller...).
Après, mon code n'a à aucun moment besoin de faire appel au bloc note, je souhaite pouvoir double cliker sur un site internet, dans un logiciel, partout ou je pourrais avoir un identifiant et un mot de passe ( cf mon exemble avec la page ebay plus haut); comme pour le site code source lorsque l'on souhaite s'identifier par exemple.
Mais merci de me répondre gillardg, o moins je me sens moins seul ^^
Peace
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
30 juin 2008 à 19:54
salut,

tu peux utiliser l'API GetWindowText pour une string dans un contrôle par son HWND (sender dans ton handler MouseDoubleClick) et SetWindowText pour copier une string dans un contrôle...après je ne suis pas sûr que IE/Firefox ou autre gère les avec des contrôles EDIT/TextBox...

ShareVB
0
GarnierFlorian Messages postés 129 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 26 juillet 2011
29 janv. 2009 à 10:23
 Salut ! Bon ba j'avais quelque peu laisser mon projet de coté, mais j'y suis revenu en ce moment.
Je souhaite répondre à la solution que m'avais donné ShareVB : en fait les informations sont déjà récupérées et elles sont bien collés, mais je pense que pour résoudre mon soucis il me faudrait pouvoir lier mon application avec IE/Firefox..
Merci, Peace
0
Rejoignez-nous