天天看點

[Windows程式設計] 使用AttachThreadInput 來捕捉其它視窗的鍵盤輸入

在一些情況下(比如螢幕軟鍵盤或者輸入法程式),自己的視窗沒有輸入焦點但是想要目前焦點視窗的鍵盤輸入消息,可以使用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);

繼續閱讀