Функция
AttachThreadInputФункция
AttachThreadInput подключает или отключает механизм обработки ввода данных одного из потоков к механизму другого потока.Синтаксис
BOOL AttachThreadInput(
); |
Параметры
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 |
Нет |
Замечания по платформе |
Не имеется |