Problème avec SendINPUT [Résolu]

Signaler
Messages postés
12
Date d'inscription
dimanche 30 mars 2003
Statut
Membre
Dernière intervention
21 août 2007
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Salut à tous, je vous explique le problème:

je cherche à simuler le clic de la souris en low level, pour cela j'utilise SendINPUT de user32.dll,
en fait à chq fois que j'apelle la méthode clique() si dessous, le programme clique...mais ne relache pas.
J'ai essayé de changer plusieurs fois les 2 constantes (0x001 et 0x002 normallement) et j'arrive à quasiment
tout faire, double-clique, simple clic avec le bouton droit, mais rien à faire avec le gauche !!

Voilà la partie du code concerné:

public class Souris
{
[DllImport("User32.dll", SetLastError=true)]
private static extern int SendInput(int nInputs, ref INPUT pInputs, int cbSize);

public const int MOUSEEVENTF_LEFTDOWN =0x0001;
public const int MOUSEEVENTF_LEFTUP =0x0002; // A lui la faute ?

public struct INPUT
{
public int type;
public MOUSEINPUT mi;
}

public struct MOUSEINPUT
{
public int dx;
public int dy;
public int mouseData;
public int dwFlags;
public int time;
public int dwExtraInfo;
}

public void clique()
{
INPUT aInput = new Souris.INPUT();
aInput.type = 0;
aInput.mi.dwFlags = Souris.MOUSEEVENTF_LEFTDOWN;
aInput.mi.dwExtraInfo = 0;
aInput.mi.mouseData = 0;
aInput.mi.time = 0;
Souris.SendInput(1, ref aInput, Marshal.SizeOf(aInput));
aInput.mi.dwFlags = Souris.MOUSEEVENTF_LEFTUP;
Souris.SendInput(1, ref aInput, Marshal.SizeOf(aInput));
}

}

alors là je suis vraiment à court d'idée... si quelqu'un à la solution...
Merci !!

NSV Corp.: 3D world of applications

1 réponse

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Salut,

// winuser.h

#define MOUSEEVENTF_LEFTDOWN 0x0002 /* left button down */
#define MOUSEEVENTF_LEFTUP 0x0004 /* left button up */