Función SendInput (winuser.h)
Sintetiza pulsaciones de tecla, movimientos del mouse y clics de botón.
Sintaxis
UINT SendInput(
[in] UINT cInputs,
[in] LPINPUT pInputs,
[in] int cbSize
);
Parámetros
[in] cInputs
Tipo: UINT
Número de estructuras de la matriz pInputs .
[in] pInputs
Tipo: LPINPUT
Matriz de estructuras INPUT . Cada estructura representa un evento que se va a insertar en el flujo de entrada del teclado o del mouse.
[in] cbSize
Tipo: int
Tamaño, en bytes, de una estructura INPUT . Si cbSize no es el tamaño de una estructura INPUT , se produce un error en la función.
Valor devuelto
Tipo: UINT
La función devuelve el número de eventos que insertó correctamente en el flujo de entrada del teclado o mouse. Si la función devuelve cero, otro subproceso ya bloqueó la entrada. Para obtener información de error extendida, llame a GetLastError.
Esta función produce un error cuando UIPI la bloquea. Tenga en cuenta que ni GetLastError ni el valor devuelto indicarán que el error fue causado por el bloqueo de UIPI.
Comentarios
Esta función está sujeta a UIPI. Las aplicaciones solo pueden insertar entradas en aplicaciones que estén en un nivel de integridad igual o menor.
La función SendInput inserta los eventos en las estructuras INPUT serialmente en el flujo de entrada del teclado o del mouse. Estos eventos no se intercalan con otros eventos de entrada de teclado o mouse insertados por el usuario (con el teclado o el mouse) o por llamadas a keybd_event, mouse_event u otras llamadas a SendInput.
Esta función no restablece el estado actual del teclado. Las teclas que ya están presionadas cuando se llama a la función pueden interferir con los eventos que esta función genera. Para evitar este problema, compruebe el estado del teclado con la función GetAsyncKeyState y corrija según sea necesario.
Dado que el teclado táctil usa las macros suplentes definidas en winnls.h para enviar la entrada al sistema, un agente de escucha en el enlace de eventos del teclado debe descodificar la entrada que se origina en el teclado táctil. Para obtener más información, vea Suplentes y caracteres complementarios.
Una aplicación de accesibilidad puede usar SendInput para insertar pulsaciones de teclas correspondientes a las teclas de acceso directo de inicio de la aplicación que controla el shell. No se garantiza que esta funcionalidad funcione para otros tipos de aplicaciones.
Ejemplo
//**********************************************************************
//
// Sends Win + D to toggle to the desktop
//
//**********************************************************************
void ShowDesktop()
{
OutputString(L"Sending 'Win-D'\r\n");
INPUT inputs[4] = {};
ZeroMemory(inputs, sizeof(inputs));
inputs[0].type = INPUT_KEYBOARD;
inputs[0].ki.wVk = VK_LWIN;
inputs[1].type = INPUT_KEYBOARD;
inputs[1].ki.wVk = 'D';
inputs[2].type = INPUT_KEYBOARD;
inputs[2].ki.wVk = 'D';
inputs[2].ki.dwFlags = KEYEVENTF_KEYUP;
inputs[3].type = INPUT_KEYBOARD;
inputs[3].ki.wVk = VK_LWIN;
inputs[3].ki.dwFlags = KEYEVENTF_KEYUP;
UINT uSent = SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));
if (uSent != ARRAYSIZE(inputs))
{
OutputString(L"SendInput failed: 0x%x\n", HRESULT_FROM_WIN32(GetLastError()));
}
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluya Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Consulte también
Conceptual
Referencia