Déplacement souris [Résolu]

cs_sergiooi 53 Messages postés vendredi 6 octobre 2006Date d'inscription 7 octobre 2009 Dernière intervention - 22 nov. 2008 à 06:59 - Dernière réponse : Francis0403 9 Messages postés jeudi 20 novembre 2008Date d'inscription 9 décembre 2008 Dernière intervention
- 9 déc. 2008 à 15:52
Bonjour à tous!! J'aimerais savoir comment pourrait-on simuler le déplacement de la souris mais pour une autre application(autre que windows).Voir est-ce réalisable genre pour dans un jeu?? Si oui, y aurrait-il une source ou tuto sur vbfrance ou je pourrais être référé?

Voilà merci à tous!!
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Francis0403 9 Messages postés jeudi 20 novembre 2008Date d'inscription 9 décembre 2008 Dernière intervention - 23 nov. 2008 à 19:45
3
Merci
Salut en fait je suis sur ce probleme, j'avais réussi à faire un setcursorpos qui marchait dans certains jeux mais qui ne marchait pas dans les jeux sous vista, puis en le lançant en mode adminstrateur il s'est mis à marcher... Maintenant le problème se pose dans les nouveaux jeux, peut être qu'il faut essayer avec un sendinput, mais je n'arrive pas à trouver des exemples concrets et simple. je vais poster à ce sujet.

Merci Francis0403 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Francis0403
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 22 nov. 2008 à 16:17
0
Merci
salut,

tu peux déplacer la souris avec l'API SetCursorPos
++


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Commenter la réponse de PCPT
cs_sergiooi 53 Messages postés vendredi 6 octobre 2006Date d'inscription 7 octobre 2009 Dernière intervention - 22 nov. 2008 à 19:16
0
Merci
oui je savais deja mais ca ne marche pas dans un jeu,juste les applis. a moins que tu ais une méthode qui marcherais.


Merci!
Commenter la réponse de cs_sergiooi
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 22 nov. 2008 à 21:55
0
Merci
peut-être directement en directx ou opengl mais je n'ai jamais essayé....
regarde les jeux existants dans les sources déposés et vois ce que çà donne... ?
Commenter la réponse de PCPT
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 22 nov. 2008 à 22:19
0
Merci
Bonsoir,

Ben...
SetCursorPos sert à définir les coordonnées du curseur par rapport à l'angle supérieur gauche de l'écran.
 Je ne voius donc pas où est le problème...
Maintenant : si tu cherches ensuite à transposer ces coordonnées par rapport à l'angle supérieur gauche de ta fenêtre de jeu (notamment avec une fenêtre Directx), c'est une autre affaire, dans laquelle SetCursorPos ne semble pas avoir à y avoir directement quoi que ce soit !
Commenter la réponse de jmf0
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 23 nov. 2008 à 21:38
0
Merci
Tout ce dont tu parles maintenant n'a plus rien à voir avec :
J'aimerais savoir comment pourrait-on simuler le déplacement de la souris
Tu en es tout simplement à t'intéresser au déclenchement d'une action, à un endroit précis d'une autre appli ...
Je doute que tu puisses y parvenir avec un jeu en Directx ...
Commenter la réponse de jmf0
cs_sergiooi 53 Messages postés vendredi 6 octobre 2006Date d'inscription 7 octobre 2009 Dernière intervention - 27 nov. 2008 à 21:39
0
Merci
Resalut!! Merci francis0403!! en effet sendinput fonctionne mais par contre pourrais tu m'en dire plus sur cet api? Car j'essaie de faire bouger ma soiris mais les coordonnées sont pas celles que je voudrais.Mon code est comme suit:
Option Explicit




Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)





Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As INPUT_TYPE, ByVal cbSize As Long) As Long





Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long





'Les bouton de la souris
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer





Private Type POINTAPI
    X As Long
    Y As Long
End Type





Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const INPUT_MOUSE = 0
Private Const INPUT_KEYBOARD = 1
Private Const INPUT_HARDWARE = 2





Type MOUSEINPUT
  dx As Long
  dy As Long
  mouseData As Long
  dwFlags As Long
  dwtime As Long
  dwExtraInfo As Long
End Type





Type INPUT_TYPE
  dwType As Long
  xi(0 To 23) As Byte
End Type





Dim Click
Dim ClickGauche As Integer
Dim ClickDroit As Integer
Dim ClickMilieu As Integer





Public Left_Click As Boolean
Public Right_Click As Boolean
Public OPX As Long
Public OPY As Long
Public Mouse_PosX As Integer
Public Mouse_PosY As Integer







Public Sub Move_Mouse()
   
    Dim pos As POINTAPI
    Dim intX As Integer
    Dim inputEvents(0 To 1) As INPUT_TYPE ' holds information about each event
    Dim mouseEvent As MOUSEINPUT ' temporarily hold mouse input info
   
   
   
    ' Load the information needed to synthesize pressing the left mouse button.
    mouseEvent.dx = 512 ' center mouse x
    mouseEvent.dy = 384 ' center mouse y
    mouseEvent.mouseData = 0 
    mouseEvent.dwFlags = MOUSEEVENTF_MOVE ' move mouse
    mouseEvent.dwtime = 0 ' use the default
    mouseEvent.dwExtraInfo = 0 
    ' Copy the structure into the input array's buffer.
    inputEvents(0).dwType = INPUT_MOUSE ' mouse input
    CopyMemory inputEvents(0).xi(0), mouseEvent, Len(mouseEvent)
   
    ' Now that all the information for the 2 input events has been placed
    ' into the array, finally send it into the input stream.
    intX = SendInput(2, inputEvents(0), Len(inputEvents(0))) ' place the events into the stream





End Sub



Voilà je veux faire en sorte que la souris se positionne au centre de mon écran(1024/768)
Merci!!
Commenter la réponse de cs_sergiooi
Francis0403 9 Messages postés jeudi 20 novembre 2008Date d'inscription 9 décembre 2008 Dernière intervention - 27 nov. 2008 à 23:41
0
Merci
Salut, vraiment je suis désolé mais je n'y connais pas grand chose, et tu m'apprends finalement l'utilisation du sendInput parce que je n'y comprenais rien et je n'arrivais pas à trouver comment ça marchait... Ceci tu "dim pos as pointapi" mais je n'ai pas l'impression que tu t'en sois servi de ce pos ? Si tu trouves dis moi, parce que je tenais vraiment à pouvoir utiliser cet api, même si c'est une infime partie du programme que je veux faire.

Merci !!
Commenter la réponse de Francis0403
cs_sergiooi 53 Messages postés vendredi 6 octobre 2006Date d'inscription 7 octobre 2009 Dernière intervention - 3 déc. 2008 à 14:33
0
Merci
J'ai trouvé,voila pour faire bouger la souris à x=512 y=384:

Mes apis:

Option Explicit



Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)



Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As INPUT_TYPE, ByVal cbSize As Long) As Long






Mes constantes:
Private Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move 32768
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down 2
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up 4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down 32
Private Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up 64
Private Const MOUSEEVENTF_MOVE = &H1 ' mouse move 1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down 8
Private Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up 16



Private Const INPUT_MOUSE = 0
Private Const INPUT_KEYBOARD = 1
Private Const INPUT_HARDWARE = 2






Mes type:


Type MOUSEINPUT
  dx As Long
  dy As Long
  mouseData As Long
  dwFlags As Long
  dwtime As Long
  dwExtraInfo As Long
End Type



Type INPUT_TYPE
  dwType As Long
  xi(0 To 23) As Byte
End Type



Et ici dans ma procédure(ex:. Form_Load):



Dim intX As Integer
Dim inputevents(0 To 1) As INPUT_TYPE ' holds information about each event
Dim mouseevent As MOUSEINPUT ' temporarily hold mouse input info


Dim DestX as Long , DestY as Long



DestX = 512
DestY = 384
DestX = DestX * 65535 / Screen.Width * Screen.TwipsPerPixelX
DestY = DestY * 65535 / Screen.Height * Screen.TwipsPerPixelY


Load the information needed to synthesize pressing the left mouse button.
    mouseevent.dx = DestX    
    mouseevent.dy = DestY    mouseevent.mouseData = 0 ' not needed
    mouseevent.dwFlags = MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_MOVE   ' move mouse
    mouseevent.dwtime = 0 ' use the default
    mouseevent.dwExtraInfo = 0  ' not needed
    ' Copy the structure into the input array's buffer.
    inputevents(0).dwType = INPUT_MOUSE ' mouse input
    CopyMemory inputevents(0).xi(0), mouseevent, Len(mouseevent)
   
    ' Now that all the information for the 2 input events has been placed
    ' into the array, finally send it into the input stream.
    intX = SendInput(2, inputevents(0), Len(inputevents(0))) ' place the events into the stream

Si t'as des questions ésite pas.
Commenter la réponse de cs_sergiooi
Francis0403 9 Messages postés jeudi 20 novembre 2008Date d'inscription 9 décembre 2008 Dernière intervention - 3 déc. 2008 à 22:15
0
Merci
trop cool merci Beaucoup :) c'est très gentil de ta part.
Commenter la réponse de Francis0403
Francis0403 9 Messages postés jeudi 20 novembre 2008Date d'inscription 9 décembre 2008 Dernière intervention - 9 déc. 2008 à 15:52
0
Merci
au fait c'est une version vb6 je pense. ça tombe bien quelqu'un m'a demandé la version vb6.
Commenter la réponse de Francis0403

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.