Funzione SendInput (winuser.h)
Sintetizza le sequenze di tasti, i movimenti del mouse e i clic sui pulsanti.
Sintassi
UINT SendInput(
[in] UINT cInputs,
[in] LPINPUT pInputs,
[in] int cbSize
);
Parametri
[in] cInputs
Tipo: UINT
Numero di strutture nella matrice pInputs .
[in] pInputs
Tipo: LPINPUT
Matrice di strutture INPUT . Ogni struttura rappresenta un evento da inserire nel flusso di input della tastiera o del mouse.
[in] cbSize
Tipo: int
Dimensioni, in byte, di una struttura INPUT . Se cbSize non è la dimensione di una struttura INPUT , la funzione ha esito negativo.
Valore restituito
Tipo: UINT
La funzione restituisce il numero di eventi inseriti correttamente nel flusso di input della tastiera o del mouse. Se la funzione restituisce zero, l'input è già stato bloccato da un altro thread. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Questa funzione ha esito negativo quando viene bloccata da UIPI. Si noti che né GetLastError né il valore restituito indicherà che l'errore è stato causato dal blocco UIPI.
Commenti
Questa funzione è soggetta a UIPI. Le applicazioni possono inserire l'input solo nelle applicazioni con un livello di integrità uguale o inferiore.
La funzione SendInput inserisce gli eventi nelle strutture INPUT serialmente nel flusso di input della tastiera o del mouse. Questi eventi non vengono intersperati con altri eventi di input della tastiera o del mouse inseriti dall'utente (con la tastiera o il mouse) o chiamate a keybd_event, mouse_event o altre chiamate a SendInput.
Questa funzione non reimposta lo stato corrente della tastiera. Qualsiasi tasto già premuto quando la funzione viene chiamata potrebbe interferire con gli eventi generati da questa funzione. Per evitare questo problema, controllare lo stato della tastiera con la funzione GetAsyncKeyState e correggere in base alle esigenze.
Poiché la tastiera touch usa le macro surrogate definite in winnls.h per inviare l'input al sistema, un listener sul gancio evento della tastiera deve decodificare l'input proveniente dalla tastiera touch. Per altre informazioni, vedere Surrogati e caratteri supplementari.
Un'applicazione di accessibilità può usare SendInput per inserire le sequenze di tasti corrispondenti ai tasti di scelta rapida dell'applicazione gestiti dalla shell. Questa funzionalità non è garantita per altri tipi di applicazioni.
Esempio
//**********************************************************************
//
// 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()));
}
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winuser.h (include Windows.h) |
Libreria | User32.lib |
DLL | User32.dll |
Vedi anche
Informazioni concettuali
Riferimento