Simulation d'un click de souris sur un bouton ReyCommand

Résolu
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 27 juil. 2007 à 18:56
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 28 juil. 2007 à 09:51
Salut à tous

Comment simuler un click de souris sur un bouton ? (Je veux qu'un évennement Validate d'un TextBox le déclenche)..
Le bouton est en fait un bouton ReyCommand..

J'ai fais le même travail avec un Bouton ordinaire :

' Dans le module
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const BM_SETSTATE = &HF3

' Puis..
Private Sub Text1_Validate(Cancel As Boolean)
    SendMessage cmdEnvoi.hwnd, BM_SETSTATE, 1, 0
    Sleep 10
    SendMessage cmdEnvoi.hwnd, BM_SETSTATE, 0, 0
End Sub

 
Mais avec le ReyCommand (Rey_XpBasics.ocx), il parait que c'est plus compliqué car il y avait beaucoup de messages à envoyer et non pas juste BM_SETSTATE(j'ai utilisé Spy++)..

J'ai pas réussi à envoyer ces messages alors je pose cette question :
Est-ce qu'on envoyer à ce bouton "un click puis un relâchement sur la touche ESPACE" tout simplement?

13 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juil. 2007 à 22:34
umm... ouai. c'est juste le meilleur moyen de prendre de mauvaises habitudes voire de renoncer parce qu'on arrive pas à faire qqc qui en fait être simple

bref vicosta a aussi proposé une solution qui est bonne

une autre est de répérer la position du bouton en fonction de l'écran (ClientToScreen), de déplacer ta souris dessus + 10*10 (SetCursorPos), et de générer un click (mouse_event)
évidemment penser à récupérer la position de la souris AVANT (GetCursorPos) pour la repositionner ensuite
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2007 à 00:55
ps : l'init de P est inutile, ClientToScreen s'en charge
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 juil. 2007 à 19:03
Salut
Et pourquoi pas simplement :
Call cmdEnvoi_Click

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
27 juil. 2007 à 19:55
ça va plaire plus à ma petite amie

Je plaisante.. D'abord merci pour votre réponse rapide.
Je suis débutant et l'opérateur qui va travailler sur l'application que je construis l'est aussi :
Moi je veux apprendre d'avantage, un homme sage m'a dit une fois : "pour mieux apprendre, ne suis pas le chemin simple !", et l'opérateur va aimer voir le bouton surjir..
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 juil. 2007 à 20:09
J'ai rien compris.
Pas grave ...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
27 juil. 2007 à 20:33
"et l'opérateur va aimer voir le bouton surjir.."



Ca changera de voir Zorro surgir du fond de la nuit !

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
vicosta Messages postés 178 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 30 novembre 2011
27 juil. 2007 à 21:32
"pour mieux apprendre, ne suis pas le chemin simple !",


pourkoi compliquer quand on peut faire simple ?





cmdEnvoi.SetFocus
SendKeys " "

S'il s'agit d'un handle d'un boutton situé dans un autre programe, il existe aussi l'API PutFocus
PS: je n'ai pas encore essaié sur un boutton  ReyCommand
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 juil. 2007 à 22:06
salut,

çà remet toute la conception de prog en compte alors....

comment faire un if sans if? une addition sans +? lancer une fenêtre sans load ni show?

tu codes pour un résultat, pour apprendre, mais surement pas pour en mettre plein la vue à un gars "aussi bon que toi" en copiant une réponse de forum, si?

enfin ce que j'en dis....

bon courage, il va t'en falloir

ps : et faut coder uniquement avec notepad, trop facile avec l'IDE sinon ^^
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
27 juil. 2007 à 22:27
Salut et merci pour les réponses,

Ce que je cherche n'est un code tout fait, j'insiste sur ce point.

Vous m'avez mal compris : je ne cherche pas à compliquer les choses, peut être j'ai donné cette impression. Mais la vérité j'ai pensé que, en choisissant la méthode compliquée, je vais apprendre plus.

Je peux tout simplement faire comme l'a dit Jack, mais comme je suis débutant, j'opte pour mon idée, car comme ça je vais utiliser les API, connaitre plus sur les messages Windows... Je préfère implémenter votre idée Jack par choix et non pas par soucie de simplicité..

Enfin, j'espère été bien expliqué et merci encore pour vos réponses
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
27 juil. 2007 à 22:48
Merci infiniment !!!
Je suis impatient de l'essayer !

et vous savez quoi, "...voire de renoncer parce qu'on arrive pas à faire qqc qui en fait être simple". Vous avez raison
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
28 juil. 2007 à 00:46
Enfin, j'ai essayé comme suit :

Private Sub txtID_KeyPress(KeyAscii As Integer)
    ' Si la touche pressée est ENTREE
    If KeyAscii = 13 Then
        ' On sauvegarde la position actuelle de la souris
        Dim currentPos As POINTAPI
        GetCursorPos currentPos
        ' On déplace la souris
        Dim P As POINTAPI
        P.x = 0
        P.y = 0
        ClientToScreen cmdEnregistrer.hwnd, P
        SetCursorPos P.x + 10, P.y + 10
        ' On simule un click de souris
        mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
        Sleep 500
        mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
        ' Retour à la position précédente
        SetCursorPos currentPos.x, currentPos.y 
    End If
   
End Sub

Tout fonctionne très bien sauf la simulation graphique d'un clique de souris..
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2007 à 00:54
Call mouse_event(MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&)
Call Sleep(200)
DoEvents




<hr size="2" width="100%" />
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
28 juil. 2007 à 09:51
Merci encore !
0
Rejoignez-nous