Problème avec SendInput pour la souris

Résolu
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009 - 31 oct. 2008 à 16:59
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009 - 31 oct. 2008 à 19:42
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

fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
31 oct. 2008 à 17:49
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.
3
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
31 oct. 2008 à 19:42
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 :)
0
Rejoignez-nous