GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 juillet 2011
-
16 juin 2008 à 09:14
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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,
'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,
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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
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
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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
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
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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
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
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 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...
GarnierFlorian
Messages postés129Date d'inscriptionmardi 27 mai 2008StatutMembreDernière intervention26 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