cs_sergiooi
Messages postés53Date d'inscriptionvendredi 6 octobre 2006StatutMembreDernière intervention 7 octobre 2009
-
22 nov. 2008 à 06:59
Francis0403
Messages postés9Date d'inscriptionjeudi 20 novembre 2008StatutMembreDernière intervention 9 décembre 2008
-
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é?
Francis0403
Messages postés9Date d'inscriptionjeudi 20 novembre 2008StatutMembreDernière intervention 9 décembre 2008 23 nov. 2008 à 19:45
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.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 22 nov. 2008 à 21:55
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... ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 22 nov. 2008 à 22:19
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 !
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 23 nov. 2008 à 21:38
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 ...
cs_sergiooi
Messages postés53Date d'inscriptionvendredi 6 octobre 2006StatutMembreDernière intervention 7 octobre 2009 27 nov. 2008 à 21:39
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
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!!
Francis0403
Messages postés9Date d'inscriptionjeudi 20 novembre 2008StatutMembreDernière intervention 9 décembre 2008 27 nov. 2008 à 23:41
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.
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
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