AttachThreadInput

あるスレッドの入力処理メカニズムを別のスレッドにアタッチする、またはそのアタッチを解除する。

AttachThreadInput idAttach, idAttachTo, fAttach

idAttach : [int] 別のスレッドにアタッチするスレッドの識別子。アタッチするスレッドはシステムスレッドであってはならない。
idAttachTo : [int] idAttach がアタッチされる先のスレッドの識別子。このスレッドはシステムスレッドであってはならない。
fAttach : [int] このパラメータが TRUE の場合、2 つのスレッドがアタッチされる。FALSE の場合は切り離される。

(プラグイン / モジュール : user32.dll)

解説

あるスレッドの入力処理メカニズムを別のスレッドにアタッチする、またはそのアタッチを解除する。

[戻り値]
関数が成功した場合、戻り値は 0 以外。関数が失敗した場合、戻り値は 0。拡張エラー情報を取得するには GetLastError
を呼ぶ。Windows Server 2003 および Windows XP では拡張エラー情報はなく、GetLastError
を呼んではならない。この動作は Windows Vista 以降で変更された。

[備考]
AttachThreadInput
関数を使うと、スレッドはキーボード状態や現在のフォーカスウィンドウなどの入力状態を別のスレッドと共有できる。両方のスレッドが受け取るキーボードおよびマウスイベントは、AttachThreadInput
を 2 回目に呼び出して fAttach に FALSE
を指定して切り離すまで、受信した順に処理される。AttachThreadInput
関数は、指定されたスレッドのいずれかがメッセージキューを持たない場合は失敗する。システムは、スレッドが USER または GDI
関数を最初に呼び出したときにそのスレッドのメッセージキューを作成する。AttachThreadInput
関数は、ジャーナル記録フックがインストールされている場合も失敗する。ジャーナル記録フックはすべての入力キューを連結する。GetKeyStateGetKeyboardState で取得できるキー状態は、AttachThreadInput
呼び出し後にリセットされる点に注意。別のデスクトップにあるスレッドにアタッチすることはできない。

情報

プラグイン / モジュールuser32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の user32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_user32_gen2.hs