Функция AttachThreadInput (winuser.h)

Присоединяет или отсоединяет механизм обработки входных данных одного потока к механизму обработки другого потока.

Синтаксис

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

Параметры

[in] idAttach

Идентификатор потока, присоединяемого к другому потоку. Присоединенный поток не может быть системным потоком.

[in] idAttachTo

Идентификатор потока, к которому будет присоединен idAttach . Этот поток не может быть системным потоком.

Поток не может подключиться к себе. Поэтому параметр idAttachTo не может равняться idAttach.

[in] fAttach

Если этот параметр имеет значение TRUE, два потока присоединяются. Если параметр имеет значение FALSE, потоки отсоединяются.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Windows Server 2003 и Windows XP: Нет расширенных сведений об ошибке; не вызывать GetLastError. Это поведение изменилось с windows Vista.

Комментарии

С помощью функции AttachThreadInput поток может совместно использовать свои входные состояния (например, состояния клавиатуры и текущее окно фокуса) с другим потоком. События клавиатуры и мыши, полученные обоими потоками, обрабатываются в порядке их получения, пока потоки не будут отсоединены путем повторного вызова AttachThreadInput и указания FALSE для параметра fAttach .

Функция AttachThreadInput завершается сбоем, если ни один из указанных потоков не имеет очереди сообщений. Система создает очередь сообщений потока, когда поток выполняет свой первый вызов одной из функций USER или GDI. Функция AttachThreadInput также завершается ошибкой, если установлен перехватчик записей журнала. Журнал перехватчики записей присоединяют все входные очереди вместе.

Обратите внимание, что состояние ключа, которое можно определить с помощью вызовов функции GetKeyState или GetKeyboardState , сбрасывается после вызова AttachThreadInput. Вы не можете подключить поток к потоку на другом рабочем столе.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-misc-l1-2-0 (представлено в Windows 8.1)

См. также раздел

GetCurrentThreadId

GetKeyState

GetKeyboardState

GetWindowThreadProcessId

Функции процессов и потоков

SetFocus

Потоки