vc postmessage 模拟鼠标点击问题 很奇怪,很无奈,很严重 请大家帮忙看看
菜头叔 2013-12-19 06:55:10 各位大神,我做了个模拟鼠标点击的东东,原理是通过WH_MOUSE_LL钩子抓取系统中的鼠标WM_LBUTTONDOWN 和 WM_LBUTTONUP消息并把这些数据记录下来了。 然后在回放的时候开了个线程不断读取这些记录的消息数据并通过
//发送事件
::PostMessage(GetNowGameHwnd(),m_verMouseEvt[i]->GetMessage(),0,MAKELPARAM(pt.x,pt.y));
m_verMouseEvt是保持消息数据的自定义类。
通过它可以正确把消息发送到相应的窗体上,效果也都OK,但是有个问题,就是每次执行这一句话的时候系统鼠标焦点就会被抢掉。
例如:当这个线程在不停的往某个窗体发送消息的时候,我随便打开一个窗口,并用鼠标拖动它不松开,一旦当线程中执行到postmessage这句话的时候鼠标焦点马上消失,刚才拖动的那个窗口回到原始位置。
求大神指点!!!!!
感激不尽。~
我知道原因可能是:系统的鼠标资源是唯一的,当接收消息的窗口收到鼠标消息并执行的时候当然会抢走鼠标焦点,但是我不明白,也不确定是否是这样。