Problème avec SendInput pour la souris [Résolu]

Signaler
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009
-
VBGenesis
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009
-
Bonjour

Je possède une vieille tablette graphique dont les drivers ne sont plus maintenus (ils ne fonctionnent qu'avec 98...), donc j'essaye de les refaire. J'arrive à récupérer les infos de la tablette (enfin pas totalement mais c'est un autre problème), par contre je n'arrive pas à faire bouger le souris. Voilà le code que j'utilise (tout les exemple que j'ai trouvé sur ce site étaient pour le clavier, j'ai donc dû adapter) :

#define _WIN32_WINNT 0x0501
#define _WIN32_IE 0x0501
#include <windows.h>

// Initialisation
INPUT souris;
souris.type = INPUT_MOUSE;
souris.mi.dwExtraInfo = MOUSEEVENTF_ABSOLUTE;
souris.mi.time = 0;

// boucle
souris.mi.dx = posX;
souris.mi.dy = posY;
SendInput(1, &souris, sizeof(INPUT));

Il n'y a pas d'erreur à la compilation. Si j'affiche la valeur retournée par SendInput, c'est 1, ce qui signifie qu'il n'y a pas d'erreur d'après la doc MSDN. Pourtant la souris ne bouge pas. J'ai dû ajouter les deux Define avant le Include (merci BruNews) car sinon il ne trouvait pas INPUT. Et même comme ça il ne trouve pas
MOUSEEVENTF_VIRTUALDESK
(c'est utile de le mettre dans mon cas?)
Cette ligne de la doc m'a intrigué :
Microsoft Windows Vista. This function fails when it is blocked by User Interface Privilege Isolation (UIPI). Note that neither GetLastError nor the return value will indicate the failure was caused by UIPI blocking.
Vous croyez que ça vient de là? (J'utilise effectivement Vista). J'ai essayé de lancé l'exe en administrateur, ça ne changeait rien.

Merci d'avance, je tourne en rond là...

PS : je suis nouveau en C, merci d'être indulgent si je pose des questions bêtes/pique des codes/comprend pas tout tout faits :)

2 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Salut,

Bienvenu dans les mystères de la simulation.
J'ai fait une appli pour le clavier, pas la souris. J'ai pris des infos un peu partout dont une source ici qui présente les 2.
J'espère que ça t'aidera.
Messages postés
292
Date d'inscription
samedi 25 février 2006
Statut
Membre
Dernière intervention
22 février 2009

Effectivement, ce code est différent, il utilise SendInput uniquement pour les clics et une autre fonction (SetMousePos) pour les mouvements. Et ça marche très bien, merci beaucoup :)