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이면 스레드가 분리됩니다.
반환 값
함수가 성공하면 반환 값이 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 도입) |