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 中斷連結,並指定 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

執行緒