Функция AttachThreadInput


Функция AttachThreadInput подключает или отключает механизм обработки ввода данных одного из потоков к механизму другого потока.

Синтаксис

BOOL AttachThreadInput(

DWORD idAttach,   // поток, который подключается

DWORD idAttachTo, // поток, к которому подключаются

BOOL fAttach      // подключить или отключить

);

Параметры

idAttach

[in] Идентификатор потока, который будет подключен к другому потоку. Поток, который будет подключен, не может быть системным потоком.

idAttachTo

[in] Идентификатор потока, к которому будет подключен idAttach. Этот поток не может быть системным потоком.

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

fAttach

[in] Если этот параметр - ИСТИНА (TRUE), эти два потока соединяются. Если параметр - ЛОЖЬ (FALSE), потоки отсоединяются.

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

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

Если функция потерпела неудачу, возвращаемое значение - ноль. Более подробных доступных данных об ошибках не имеется; не вызывайте функцию GetLastError.

Замечания

Окна, созданные в разных потоках обычно обрабатывают ввод данных независимо друг от друга. То есть они имеют свои собственные состояния ввода данных (фокус, активность, окна захвата, состояние клавиши, состояние очереди и так далее), и они не синхронизированы с обработкой ввода данных других потоков. При помощи использования функции AttachThreadInput, поток может подключать свою обработку ввода данных к другому потоку. Это к тому же позволяет потокам совместно использовать их статусы ввода данных, так что они могут вызывать функцию SetFocus, чтобы установить фокус клавиатуры в окне другого потока. Это также позволяет потокам получить информацию о состоянии клавиши. Эти способности обычно невозможны.

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

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

Windows NT/2000/XP: Вы не можете подключить поток к потоку на другом рабочем столе.

Смотри также

Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, GetCurrentThreadId, GetKeyState, GetKeyboardState, GetWindowThreadProcessId, SetFocus

Размещение и совместимость AttachThreadInput

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winbase.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz