在一些情況下(比如螢幕軟鍵盤或者輸入法程式),自己的視窗沒有輸入焦點但是想要目前焦點視窗的鍵盤輸入消息,可以使用Win32 API函數AttachThreadInput()來解決這個問題。AttachThreadInput把一個線程(idAttach)的輸入消息連接配接到另外線程(idAttachTo)。
函數定義:
BOOL WINAPI AttachThreadInput(
__in DWORD idAttach,
__in DWORD idAttachTo,
__in BOOL fAttach
);
用法示例:
AttachThreadInput(
::GetWindowThreadProcessId(::GetForegroundWindow(),NULL), //目前焦點視窗的線程ID
::GetCurrentThreadId(), //自己的線程ID
TRUE);