由于GetFocus只能本身进程调用,所以必须调用AttachThreadInput函数附加线程
HWND wnd;//窗口句柄
wnd=GetForegroundWindow();//获得当前激活的窗口句柄
DWORD SelfThreadId=GetCurrentThreadId();//获取本身的线程ID
DWORD ForeThreadId=GetWindowThreadProcessId(wnd,NULL);//根据窗口句柄获取线程ID
AttachThreadInput(ForeThreadId,SelfThreadId,true);//附加线程
wnd=GetFocus();//获取具有输入焦点的窗口句柄
AttachThreadInput(ForeThreadId,SelfThreadId,false);//取消附加的线程
SendMessage(wnd,WM_CHAR,WPARAM('a'),0);//发送一个字消息
本文介绍了一种方法,用于跨线程获取当前具有输入焦点的窗口句柄。通过使用GetForegroundWindow、GetWindowThreadProcessId及AttachThreadInput等API函数,实现了不同线程间获取焦点窗口的功能。

被折叠的 条评论
为什么被折叠?



