Função AttachThreadInput (winuser.h)

Anexa ou desanexa o mecanismo de processamento de entrada de um thread ao de outro thread.

Sintaxe

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

Parâmetros

[in] idAttach

O identificador do thread a ser anexado a outro thread. O thread a ser anexado não pode ser um thread do sistema.

[in] idAttachTo

O identificador do thread ao qual idAttach será anexado. Esse thread não pode ser um thread do sistema.

Um thread não pode ser anexado a si mesmo. Portanto, idAttachTo não pode ser igual a idAttach.

[in] fAttach

Se esse parâmetro for TRUE, os dois threads serão anexados. Se o parâmetro for FALSE, os threads serão desanexados.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Windows Server 2003 e Windows XP: Não há informações de erro estendidas; não chame GetLastError. Esse comportamento mudou a partir do Windows Vista.

Comentários

Usando a função AttachThreadInput , um thread pode compartilhar seus estados de entrada (como estados de teclado e a janela de foco atual) com outro thread. Os eventos de teclado e mouse recebidos por ambos os threads são processados na ordem em que foram recebidos até que os threads sejam desanexados chamando AttachThreadInput uma segunda vez e especificando FALSE para o parâmetro fAttach .

A função AttachThreadInput falhará se um dos threads especificados não tiver uma fila de mensagens. O sistema cria a fila de mensagens de um thread quando o thread faz sua primeira chamada para uma das funções USER ou GDI. A função AttachThreadInput também falhará se um gancho de registro de diário estiver instalado. Diário ganchos de registro anexam todas as filas de entrada.

Observe que o estado da chave, que pode ser apurado por chamadas para a função GetKeyState ou GetKeyboardState , é redefinido após uma chamada para AttachThreadInput. Você não pode anexar um thread a um thread em outra área de trabalho.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-misc-l1-2-0 (introduzido em Windows 8.1)

Confira também

Getcurrentthreadid

GetKeyState

GetKeyboardState

GetWindowThreadProcessId

Funções de thread e processo

SetFocus

Threads