Utilisation de SetCursorPos et Mouse_Event

Résolu
nazzguhl Messages postés 26 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 26 janvier 2011 - 31 déc. 2004 à 00:37
nazzguhl Messages postés 26 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 26 janvier 2011 - 31 déc. 2004 à 03:36
Bonjour,

j'ai trouvé dans le forum plusieurs exemples de SetCursorPos et Mouse_Event, je les ai essayés, mais ça ne fonctionne pas comme je l'espérais.

j'utilise l'évenement Form_MouseDown pour récupérer la position de la souris dans ma feuille et quand je veux repositionner la souris avec SetCursorPos pour effectuer un click de souris, le pointeur n'est pas au bon endroit, est-ce un problème d'unité (pixel, twip, mm ou inche) ?
je voudrais juste avoir les bonnes valeurs en X et Y, pour pouvoir cliquer des boutons d'un OCX qui n'est pas prévu pour fonctionner sans interventions !

Les Sp utilisés :

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button vbLeftButton Then Xpos X If Button vbLeftButton Then Ypos Y
Me.PSet (X, Y), QBColor(Rnd * 15) ' pour pointer la position de la souris
End Sub

et

Private Sub Command1_Click()
'position de la souris au coordonnée X et Y
SetCursorPos Xpos, Ypos '=> la souris sort de l'écran !!!
'Le bouton gauche de la souris s'enfonce
'Call mouse_event(MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_ABSOLUTE, Me.Left, Me.Top, 0, 0) '
'le bouton gauche de la souris se relache
'Call mouse_event(MOUSEEVENTF_LEFTUP + MOUSEEVENTF_ABSOLUTE, Me.Left, Me.Top, 0, 0)
End Sub

Merci d'avance

ACT

3 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
31 déc. 2004 à 01:34
Xpos = X + ScaleX(Left, vbTwips, vbPixels) + 4
Ypos = Y + ScaleY(Top, vbTwips, vbPixels) + 30

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
31 déc. 2004 à 01:45
4 c'est l'épaisseur de la bordure gauche de la Forme
et 30 c'est l'épaisseur de la barre du haut
calculé par différence entre les dimensions de la Forme et de la zone client:

dx = (ScaleX(Width, vbTwips, vbPixels) - ScaleX(ScaleWidth, ScaleMode, vbPixels)) / 2
dy = (ScaleX(Height, vbTwips, vbPixels) - ScaleX(ScaleHeight, ScaleMode, vbPixels)) - dx

Daniel
3
nazzguhl Messages postés 26 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 26 janvier 2011
31 déc. 2004 à 03:36
Merci, je pense que ça va résoudre mon problème

ACT
3
Rejoignez-nous