Desde la aparición de Windows NT la API mouse_event se ha suprimido en favor de SendInput.
Aquí expongo una función que simula un Click en unas coordenadas absolutas de la pantalla:
int MouseClick(int x, int y) { TPoint P; GetCursorPos(&P); // Guardo las coordenadas del mouse SetCursorPos(x, y); INPUT Input[2]; ::ZeroMemory(Input, sizeof(Input)); Input[0].type = INPUT_MOUSE; Input[0].mi.dx = x; Input[0].mi.dy = y; Input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN; Input[1].type = INPUT_MOUSE; Input[1].mi.dx = x; Input[1].mi.dy = y; Input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP; int a = SendInput(2, Input, sizeof(INPUT)); SetCursorPos(P.x, P.y); // Restauro las coordenadas del Mouse return a; // Retorno el número de eventos enviados }
Saludos.