AttachThreadInput, fonction (winuser.h)

Attache ou détache le mécanisme de traitement d’entrée d’un thread à celui d’un autre thread.

Syntaxe

BOOL AttachThreadInput(
  [in] DWORD idAttach,
  [in] DWORD idAttachTo,
  [in] BOOL  fAttach
);

Paramètres

[in] idAttach

Identificateur du thread à attacher à un autre thread. Le thread à attacher ne peut pas être un thread système.

[in] idAttachTo

Identificateur du thread auquel idAttach sera attaché. Ce thread ne peut pas être un thread système.

Un thread ne peut pas s’attacher à lui-même. Par conséquent, idAttachTo ne peut pas être égal à idAttach.

[in] fAttach

Si ce paramètre a la valeur TRUE, les deux threads sont attachés. Si le paramètre a la valeur FALSE, les threads sont détachés.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Windows Server 2003 et Windows XP : Il n’existe aucune information étendue sur les erreurs ; n’appelez pas GetLastError. Ce comportement a changé à partir de Windows Vista.

Remarques

À l’aide de la fonction AttachThreadInput , un thread peut partager ses états d’entrée (tels que les états du clavier et la fenêtre de focus actuelle) avec un autre thread. Les événements clavier et souris reçus par les deux threads sont traités dans l’ordre dans lequel ils ont été reçus jusqu’à ce que les threads soient détachés en appelant AttachThreadInput une deuxième fois et en spécifiant FALSE pour le paramètre fAttach .

La fonction AttachThreadInput échoue si l’un des threads spécifiés n’a pas de file d’attente de messages. Le système crée la file d’attente de messages d’un thread lorsque le thread effectue son premier appel à l’une des fonctions USER ou GDI. La fonction AttachThreadInput échoue également si un hook d’enregistrement de journal est installé. Journal les crochets d’enregistrement joignent toutes les files d’attente d’entrée ensemble.

Notez que l’état de clé, qui peut être déterminé par les appels à la fonction GetKeyState ou GetKeyboardState , est réinitialisé après un appel à AttachThreadInput. Vous ne pouvez pas attacher un thread à un thread dans un autre bureau.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-misc-l1-2-0 (introduit dans Windows 8.1)

Voir aussi

GetCurrentThreadId

GetKeyState

GetKeyboardState

GetWindowThreadProcessId

Fonctions de processus et de thread

SetFocus

Threads