AttachThreadInput 함수(winuser.h)

한 스레드의 입력 처리 메커니즘을 다른 스레드의 입력 처리 메커니즘에 연결하거나 분리합니다.

구문

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

매개 변수

[in] idAttach

다른 스레드에 연결할 스레드의 식별자입니다. 연결할 스레드는 시스템 스레드일 수 없습니다.

[in] idAttachTo

idAttach가 연결될 스레드의 식별자입니다. 이 스레드는 시스템 스레드일 수 없습니다.

스레드는 자체에 연결할 수 없습니다. 따라서 idAttachToidAttach와 같을 수 없습니다.

[in] fAttach

이 매개 변수가 TRUE이면 두 스레드가 연결됩니다. 매개 변수가 FALSE이면 스레드가 분리됩니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

Windows Server 2003 및 Windows XP: 확장된 오류 정보는 없습니다. GetLastError를 호출하지 마세요. 이 동작은 Windows Vista를 기준으로 변경되었습니다.

설명

AttachThreadInput 함수를 사용하면 스레드가 입력 상태(예: 키보드 상태 및 현재 포커스 창)를 다른 스레드와 공유할 수 있습니다. 두 스레드에서 받은 키보드 및 마우스 이벤트는 AttachThreadInput을 두 번째로 호출하고 fAttach 매개 변수에 FALSE를 지정하여 스레드가 분리될 때까지 받은 순서대로 처리됩니다.

지정된 스레드 중 하나에 메시지 큐가 없는 경우 AttachThreadInput 함수가 실패합니다. 스레드가 USER 또는 GDI 함수 중 하나를 처음 호출할 때 시스템은 스레드의 메시지 큐를 만듭니다. 저널 레코드 후크가 설치된 경우에도 AttachThreadInput 함수가 실패합니다. 저널 레코드 후크는 모든 입력 큐를 함께 연결합니다.

GetKeyState 또는 GetKeyboardState 함수를 호출하여 확인할 수 있는 키 상태는 AttachThreadInput을 호출한 후 다시 설정됩니다. 다른 데스크톱의 스레드에 스레드를 연결할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 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

스레드