MFC 在后台运行的程序中 模拟鼠标点击(不影响当前鼠标的操作!)

来源:百度知道 编辑:UC知道 时间:2024/06/21 00:19:20
首先我用 findwindow 获得了 窗口的句柄 h

h=CWnd::FindWindow(NULL,"xxx");//xxx为某一窗口
h->MessageBox("已经绑定到xxx");//这句可以成功执行
然后问题就出现了

1.我用:
h->PostMessage(WM_RBUTTONDBLCLK, 0, MAKELONG(10,10) );
2.或用:
::PostMessage(h->m_hWnd,WM_RBUTTONDOWN,MK_RBUTTON,MAKELONG(10,10));
3或者用h->SendMessage(WM_LBUTTONDOWN, 0, MAKELONG(10,10) );
h->SendMessage(WM_LBUTTONUP, 0, MAKELONG(10,10) );
都无法对目标窗口发送成功鼠标的消息····

注意 不要提供这种方法
SetCursorPos(kx.left+910,kx.top+200);//防御
mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP,0,0,0,0);

我要的是模拟鼠标点击 而真正的鼠标是不受影响的 希望能提供源代码
貌似可以用 directinput 但是具体怎么用那 要提供什么com呢
希望有人可以提供源代码 谢谢

你要确认h是响应鼠标消息的窗口。有的窗口是多个窗口嵌套的。也许响应鼠标消息的是在其子窗口中说不定。

你想做的就是让h窗口响应你想要的鼠标事件吧?
如果h窗口是程序进程创建的,可以重载一下h的PreTranslateMessage看看消息是否被发送过来了,注意只截取你发送的消息。
如果h窗口是别的程序进程创建的,那就只能用工具看看h是否接收到消息了。
还有一个很猥琐的方法。。你可以让鼠标移动过去点击一下然后再回来。。。只是发送消息的话用户一般感觉不到的。。。

如何判断消息没有发送成功?用SPY++监视过目标窗口的消息吗?

遇到相同问题,我在CSDN上喊了好几天都没人能真正解决,不过我遇到的一些类似问题用PostMessage和SendMessage可以,但有一些就不行,真不知是为什么???