Función GetTouchInputInfo (winuser.h)
Simula la entrada táctil.
Sintaxis
BOOL InjectTouchInput(
[in] UINT32 count,
[in] const POINTER_TOUCH_INFO *contacts
);
Parámetros
[in] count
Tamaño de la matriz en contactos.
El valor máximo de count se especifica mediante el parámetro maxCount de la función InitializeTouchInjection .
[in] contacts
Matriz de estructuras de POINTER_TOUCH_INFO que representa todos los contactos del escritorio. Las coordenadas de pantalla de cada contacto deben estar dentro de los límites del escritorio.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
La entrada insertada se envía al escritorio de la sesión donde se ejecuta el proceso de inserción.
Hay dos estados de entrada para la inserción de entrada táctil (interactivo y mantener el puntero) indicados por las siguientes combinaciones de pointerFlags en contactos:
pointerFlags (POINTER_FLAG_*) | Estado |
---|---|
INRANGE | ACTUALIZAR | El puntero táctil se inicia o se mueve |
INRANGE | INCONTACT | ABAJO | Contacto táctil hacia abajo |
INRANGE | INCONTACT | ACTUALIZAR | Movimientos de contacto táctil |
INRANGE | Hacia arriba | Contacto táctil y transición al mantener el puntero |
UPDATE | Finaliza el puntero táctil |
UP | Extremos táctiles |
En el diagrama siguiente se muestra una secuencia de inyección táctil que comienza con un estado de desplazamiento, realiza transiciones a interactivas y concluye con el mouse.
Para los gestos de pulsación y suspensión, se deben enviar varios fotogramas para asegurarse de que no se cancele la entrada. Para presionar y mantener pulsado en el punto (x,y), envíe WM_POINTERDOWN en el punto (x,y) seguido de WM_POINTERUPDATE mensajes en point(x,y).
Escuche WM_DISPLAYCHANGE para controlar los cambios en la resolución y orientación de la pantalla y administrar las actualizaciones de coordenadas de pantalla. Todos los contactos activos se cancelan cuando se recibe un WM_DISPLAYCHANGE .
Cancele contactos individuales estableciendo POINTER_FLAG_CANCELED con POINTER_FLAG_UP o POINTER_FLAG_UPDATE. La cancelación de la inyección táctil sin POINTER_FLAG_UP o POINTER_FLAG_UPDATE invalida la inyección.
Cuando se establece POINTER_FLAG_UP, ptPixelLocation de POINTER_INFO debe ser el mismo que el valor del marco de inyección táctil anterior con POINTER_FLAG_UPDATE. De lo contrario, se produce un error en la inyección con ERROR_INVALID_PARAMETER y se cancelan todos los contactos de inyección activos. El sistema modifica el ptPixelLocation del evento WM_POINTERUP a medida que cancela la inyección.
La marca de tiempo de entrada se puede especificar en el campo dwTime o PerformanceCount de POINTER_INFO. El valor no puede ser más reciente que el número de tics actual o el valor QueryPerformanceCounter del subproceso de inyección. Una vez que se inserta un fotograma con una marca de tiempo, todos los fotogramas subsiguientes deben incluir una marca de tiempo hasta que todos los contactos del marco vayan al estado UP. El valor de marca de tiempo personalizado debe proporcionarse para el primer elemento de la matriz de contactos. Los valores de marca de tiempo después del primer elemento se omiten. El valor de marca de tiempo personalizado debe incrementarse en cada fotograma de inyección.
Cuando se especifica un campo PerformanceCount, la marca de tiempo se convierte en la hora actual en resolución .1 milisegundos tras la inyección real. Si un PerformanceCount personalizado dio lugar a la misma ventana .1 milisegundos de la inyección anterior, la API devolverá un error (ERROR_NOT_READY) y no insertará los datos. Aunque la inyección no se invalida inmediatamente por el error, la siguiente inyección correcta debe tener un valor performanceCount que tenga al menos 0,1 milisegundos aparte de la inyección correcta anteriormente. Del mismo modo, un valor dwTime personalizado debe estar al menos 1 milisegundos separados si se usó el campo.
Si se especifican dwTime y PerformanceCount en el parámetro de inyección, Se produce un error en InjectTouchInput con un código de error (ERROR_INVALID_PARAMETER). Una vez que la aplicación de inserción se inicia con un parámetro dwTime o PerformanceCount, el campo timestamp debe rellenarse correctamente. La inyección no puede cambiar el campo de marca de tiempo personalizado de uno a otro una vez iniciada la secuencia de inyección.
Cuando no se especifican valores dwTime o PerformanceCount, InjectTouchInput asigna la marca de tiempo según el tiempo de la llamada API. Si las llamadas tienen menos de 0,1 milisegundos, la API puede devolver un error (ERROR_NOT_READY). El error no invalidará la entrada inmediatamente, pero la aplicación de inserción debe volver a intentar el mismo fotograma para asegurarse de que la inyección se realice correctamente.
Requisitos
Cliente mínimo compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h |
Library | User32.lib |
Archivo DLL | User32.dll |
Conjunto de API | ext-ms-win-rtcore-ntuser-wmpointer-l1-1-0 (introducido en Windows 10, versión 10.0.14393) |