C# SendInput simuler click

boutnell
Messages postés
22
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
28 avril 2007
- 15 mars 2006 à 20:11
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
- 15 mars 2006 à 23:39
Bonjour,

Je voudrais simuler un click sur la fenetre active à la position x,y depsui mon application.

Je pense qu'il faut utiliser la méthode SendInput depuis user32.dll mais je n'arrive pas à passer les bons argument.

Quelqu'un peut-il m'aider ?

Send input - MSDN
Merci!!

3 réponses

Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
15 mars 2006 à 20:33
Tu dois passer un tableau de structure INPUT. Pour faire une union en C# il faut utiliser une structure avec l'attribut [ StructLayout( LayoutKind.Explicit ) ] et définir chaque champs avec l'attribut [ FieldOffset ].

Tu as les prototypes managés >ici<.
0
boutnell
Messages postés
22
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
28 avril 2007

15 mars 2006 à 20:58
Voici mon code:




public const int MOUSEEVENTF_LEFTDOWN =0x0001;

public const int MOUSEEVENTF_LEFTUP =0x0004;


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;
p
ublic int dwExtraInfo;

}

INPUT aInput =
new INPUT();

aInput.type
=
0;

aInput.mi
.dwFlags
=
0;

aInput.mi
.mouseData
= MOUSEEVENTF_LEFTDOWN;

aInput.mi
.dwExtraInfo
=
0;

aInput.mi
.dx
=35;

aInput.mi
.dy
=985;

aInput.mi
.time
=
0;




int Res1
=SendInput(
1,
ref aInput, Marshal
.SizeOf(aInput));


aInput.mi
.mouseData
= MOUSEEVENTF_LEFTUP;


int Res2
=SendInput(
1,
ref aInput, Marshal
.SizeOf(aInput));


Console.WriteLine(
"RES1: "
+ Res1
.ToString()
+" - RES2: "
+ Res2
.ToString())

Res1 et Res2 sont égaux à 1 mais le click ne se produit pas.
0
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
27 octobre 2012
42
15 mars 2006 à 23:39
const int MOUSEEVENTF_LEFTDOWN = 0x0002;
const int MOUSEEVENTF_LEFTUP = 0x0004;
0