2010-12-27 32 views
5

Me gustaría mover y hacer clic en el mouse mediante programación usando la API de Windows en C. He buscado en google alto y bajo y no puedo encontrar ningún tutorial de SendInput para C. Todo lo que puedo encontrar es C#/C++. Tengo poca experiencia con la API de Windows y me encantaría un excelente tutorial que cubra sendInput. ¡Gracias!usando el mouse con sendInput en C

+9

La versión de C++ será apropiada, esto no es diferente ya que Winapi está basado en C. –

+0

¡Debe dejar eso como respuesta para que pueda marcarlo como correcto! : p –

+0

simplemente puede aceptar su respuesta, ¡no creo que Hans necesite el representante! –

Respuesta

18

Hans Passant tenía razón con el código de C++ era casi idéntico. Esto es lo que terminé con:

INPUT input; 
input.type = INPUT_MOUSE; 
input.mi.mouseData = 0; 
input.mi.dx = x * (65536/GetSystemMetrics(SM_CXSCREEN)); //x being coord in pixels 
input.mi.dy = y * (65536/GetSystemMetrics(SM_CYSCREEN)); //y being coord in pixels 
input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; 
SendInput(1, &input, sizeof(input)); 
+2

Una cosa muy importante que debe tener en cuenta es que debe forzar 65536 a una flotación, de lo contrario, la conversión del tamaño de la pantalla estará desactivada en varios píxeles. 65536.0f para una mejor precisión. –

+0

@ Error454 ¿Sabes por qué dx y dy deben tener ese extraño formato para un movimiento absoluto? El movimiento relativo, por otro lado, necesita que dx y dy sean recuento de píxeles puro. – Bitterblue

+1

@ mini-me De la manera en que msft decidió hacer las cosas. Su sistema de coordenadas es (0,0) para arriba a la izquierda y (65535,65535) para abajo a la derecha. –

Cuestiones relacionadas