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

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

在一些情況下(比如螢幕軟鍵盤或者輸入法程式),自己的視窗沒有輸入焦點但是想要當前焦點視窗的鍵盤輸入訊息,可以使用Win32 API函式來解決這個問題。AttachThreadInput把一個執行緒(idAttach)的輸入訊息連線到另外執行緒(idAttachTo)。

函式定義:

BOOL WINAPI AttachThreadInput(
  __in  DWORD idAttach,
  __in  DWORD idAttachTo,
  __in  BOOL fAttach
);

用法示例:

AttachThreadInput(

         ::GetWindowThreadProcessId(::GetForegroundWindow(),NULL),  //當前焦點視窗的執行緒ID

         ::GetCurrentThreadId(),  //自己的執行緒ID

         TRUE);