Bonjour,

J’essaie de faire une application qui effectue une serie de clics à des coordonnées différentes. C'est loin d'être la première appli de la sorte que je fait mais là je sèche.

Après avoir longtemps utilisé la fonction mouse_event, qui ne marche pas dans mon cas, j'ai vu qu'elle était maintenant obsolète.

J'ai donc décidé d'utiliser SendMessage .... qui ne marche pas non plus. Voici mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
class FoncPerso
{
        [DllImport("user32.dll", SetLastError = true)]
        static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
 
        [StructLayout(LayoutKind.Explicit)] struct INPUT
        {
            [FieldOffset(0)] public int type;
            [FieldOffset(sizeof(int))] public MOUSEINPUT mi; //[FieldOffset(8)] for x64
            [FieldOffset(sizeof(int))] public KEYBDINPUT ki;//[FieldOffset(8)] for x64
            [FieldOffset(sizeof(int))] public HARDWAREINPUT hi;//[FieldOffset(8)] for x64
        }
 
        [StructLayout(LayoutKind.Sequential)] struct MOUSEINPUT
        {
            public int dx;
            public int dy;
            public uint mouseData;
            public uint dwFlags;
            public uint time;
            public IntPtr dwExtraInfo;
        }
 
        const uint MOUSEEVENTF_LEFTDOWN = 0x0002;
        const uint MOUSEEVENTF_LEFTUP = 0x0004;
        const uint MOUSEEVENTF_MOVE = 0x0001;
 
        public static void MouseClick()
        {
 
            INPUT[] dblClick = new INPUT[2];
 
            dblClick[0].type = 0;
            dblClick[0].mi.dx = 960;
            dblClick[0].mi.dy = 540;
            dblClick[0].mi.mouseData = 0;
            dblClick[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
            dblClick[0].mi.time = 0;
 
            dblClick[1].type = 0;
            dblClick[1].mi.dx = 960;
            dblClick[1].mi.dy = 540;
            dblClick[1].mi.mouseData = 0;
            dblClick[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
            dblClick[1].mi.time = 0;
 
 
 
            uint res = SendInput(2, dblClick, Marshal.SizeOf(new INPUT()));
            Thread.Sleep(1000);
            MessageBox.Show(Convert.ToString(res));
        }
}
Seulement ça ne marche pas.

Je n'ai aucun message d'erreur, la fonction revoie bien 2 enfin tout comme si ca marchais .... mais non !!

Si quelqu'un à une lumière je suis preneur.

Merci bien