Fonction SendInput (winuser.h)
Synthétise les frappes au clavier, les mouvements de la souris et les clics sur les boutons.
Syntaxe
UINT SendInput(
[in] UINT cInputs,
[in] LPINPUT pInputs,
[in] int cbSize
);
Paramètres
[in] cInputs
Type : UINT
Nombre de structures dans le tableau pInputs .
[in] pInputs
Type : LPINPUT
Tableau de structures INPUT . Chaque structure représente un événement à insérer dans le flux d’entrée du clavier ou de la souris.
[in] cbSize
Type : int
Taille, en octets, d’une structure INPUT . Si cbSize n’a pas la taille d’une structure INPUT , la fonction échoue.
Valeur retournée
Type : UINT
La fonction retourne le nombre d’événements qu’elle a correctement insérés dans le flux d’entrée du clavier ou de la souris. Si la fonction retourne zéro, l’entrée a déjà été bloquée par un autre thread. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Cette fonction échoue lorsqu’elle est bloquée par UIPI. Notez que ni GetLastError ni la valeur de retour n’indiquent que l’échec a été provoqué par le blocage DE L’UIPI.
Remarques
Cette fonction est soumise à UIPI. Les applications sont autorisées à injecter des entrées uniquement dans les applications qui sont à un niveau d’intégrité égal ou inférieur.
La fonction SendInput insère les événements des structures INPUT en série dans le flux d’entrée du clavier ou de la souris. Ces événements ne sont pas entrecoupés d’autres événements d’entrée de clavier ou de souris insérés par l’utilisateur (avec le clavier ou la souris) ou par des appels à keybd_event, mouse_event ou d’autres appels à SendInput.
Cette fonction ne réinitialise pas l’état actuel du clavier. Toutes les touches déjà enfoncées lorsque la fonction est appelée peuvent interférer avec les événements générés par cette fonction. Pour éviter ce problème, case activée l’état du clavier avec la fonction GetAsyncKeyState et corrigez si nécessaire.
Étant donné que le clavier tactile utilise les macros de substitution définies dans winnls.h pour envoyer une entrée au système, un écouteur sur le crochet d’événement du clavier doit décoder l’entrée provenant du clavier tactile. Pour plus d’informations, consultez Substituts et caractères supplémentaires.
Une application d’accessibilité peut utiliser SendInput pour injecter des frappes correspondant aux touches de raccourci de lancement de l’application qui sont gérées par l’interpréteur de commandes. Il n’est pas garanti que cette fonctionnalité fonctionne pour d’autres types d’applications.
Exemple
//**********************************************************************
//
// 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()));
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Voir aussi
Conceptuel
Référence