Faire cliquer la souris à un endroit choisi.

Envoyer des evenements souris.

SendInput

Voir version :

Pas de dépendances

Télécharger :

#define _WIN32_WINNT 0x0500
#include <windows.h>

void clic_ici(int x, int y)
{
    INPUT i[2];
    memset(i, 0, sizeof(i));
    i[0].type = i[1].type = INPUT_MOUSE;
    i[0].mi.dx = (65535. / (double)GetSystemMetrics(SM_CXSCREEN)) * x;
    i[0].mi.dy = (65535. / (double)GetSystemMetrics(SM_CYSCREEN)) * y;
    i[0].mi.dwFlags = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN;
    i[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
    SendInput(2, i, sizeof(INPUT));
}

int main(void)
{
    int delai_en_secondes =  5;
    int position_x = 500, position_y = 500;
    while(1){
        clic_ici(position_x, position_y);
        Sleep(delai_en_secondes * 1000);
    }
    return 0;
}



Commentaires

	Merci à Magma pour l'exemple :
	http://www.siteduzero.com/forum-83-638031-p1-programme-clic-resolut.html#r6136745
	
	Voici un programme qui fait cliquer la souris à la coordonnée 500,500, toutes les 5 secondes.
	On appelle la fonction clic_ici, puis on attend 5 secondes.

	Dans la fonction, nous crénos 2 structures INPUT, que nous remplissons, et envoyons à la fonction SendInput
	Nous envoyons à cette dernière 2 structures, car quand on clique, on appuie et on relâche. Cela se fait en deux fois.

	dx et dy sont des coordonnées absolues (qu'on spécifie avec le flag MOUSEEVENTF_ABSOLUTE) qui seraient les coordonnées des la souris 
	dans la résolution maximum théorique 65535*65535.
	Utiliser GetSystemMetrics avec SM_CXSCREEN et SM_CYSCREEN permet de récupérer votre résolution, et donc de spécifier les coordonnées x,y dans votre résolution.

	Le reste du code parle de lui même.

	Quelques documentations :

	Fonction SendInput : 
	http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx

	De la vous pouvez vous documenter sur la structure INPUT.

Laissez un commentaire / post a comment