Función GetTouchInputInfo (winuser.h)

Simula la entrada táctil.

NotaInitializeTouchInjection debe preceder a cualquier llamada a InjectTouchInput.

 

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
 
Nota El estado interactivo representa un contacto táctil que está en pantalla y puede interactuar con cualquier aplicación compatible con la función táctil. El estado de desplazamiento representa la entrada táctil que no está en contacto con la pantalla y no puede interactuar con las aplicaciones. La inyección táctil puede iniciarse en estado de puntero o interactivo, pero el estado solo puede realizar la transición a través de INRANGE | INCONTACT | DOWN para mantener el puntero al estado interactivo o a través de INRANGE | UP para que el estado interactivo mantenga el puntero.
 
Todas las secuencias de inyección táctil terminan con UPDATE o UP.

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.

Diagrama de una secuencia de inserción táctil que muestra las transiciones de estado del puntero al puntero al puntero interactivo.

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)

Vea también

Funciones