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

首先我用 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的PreTranslateMessage看看消息是否被发送过来了,注意只截取你发送的消息。
如果h窗口是别的程序进程创建的,那就只能用工具看看h是否接收到消息了。
还有一个很猥琐的方法。。你可以让鼠标移动过去点击一下然后再回来。。。只是发送消息的话用户一般感觉不到的。。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-10-01
你要确认h是响应鼠标消息的窗口。有的窗口是多个窗口嵌套的。也许响应鼠标消息的是在其子窗口中说不定。本回答被提问者采纳
第2个回答  2008-10-07
遇到相同问题,我在CSDN上喊了好几天都没人能真正解决,不过我遇到的一些类似问题用PostMessage和SendMessage可以,但有一些就不行,真不知是为什么???
第3个回答  2008-09-30
如何判断消息没有发送成功?用SPY++监视过目标窗口的消息吗?

MFC 在后台运行的程序中 模拟鼠标点击(不影响当前鼠标的操作!)
如果h窗口是程序进程创建的,可以重载一下h的PreTranslateMessage看看消息是否被发送过来了,注意只截取你发送的消息。如果h窗口是别的程序进程创建的,那就只能用工具看看h是否接收到消息了。还有一个很猥琐的方法。。你可以让鼠标移动过去点击一下然后再回来。。。只是发送消息的话用户一般感觉不到的。。。

MFC中用模拟鼠标点击操作,怎么搞?
::mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());::mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());就用这个函数,你问如何在后台起作用?你可以写一个计时器后者开一个线程,那样就可以一直不断的执行。

mfc如何屏蔽系统弹出某个窗口,并模拟鼠标按键输入
c++打印代码中弹出打印确认窗口主要是用来让用户选择打印机的,你这种情况的话就没必要弹那个窗口了,要么选择系统默认打印机(当前选中的),要么自动选择固定名称的打印机。弹那个窗口是非常不友好的。

VC++\/MFC 后台模拟按键
keybd_event(,,,);4个参数,第一个是虚拟键码,第二个是扫描码,具体怎么用我也不会,写0就行。第三个是个是个DOWRD类型, KEYEVENTF_KEYUP是弹起,0为按下,最后一个具体干啥也不太清楚,写0即可。。。第一个是虚拟键码不是ASCII码,具体虚拟见码可以查虚拟键表。。。影响不影响前台...

VC++\/MFC 后台模拟按键
思路完全错了 打开我的电脑有特定的代码 单单是SendMessage PostWindow就太简单了 FindWindow也不可能找到没有打开的我的电脑的句柄 建议你从基础学起 先试试钩子 你的代码看上去就跟扯淡似的 模拟鼠标 键盘消息也有特定的函数 mouse_event()和keybd_event 等 用法你自己找 ...

vc++6.0 求模拟鼠标点击代码?
MFC 工程把以下代码放到你想要响应的函数里面就行CPoint pt;GetCursorPos(&pt);\/\/获取鼠标在屏幕的当前位置 SetCursorPos(100,200);\/\/移动到某点坐标 mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);\/\/点下右键 mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);\/\/松开右键 mouse_event(MOUSEEVENTF_...

如何在程序中模拟鼠标单击事件?
VOID mouse_event(DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,DWORD dwExtraInfo );

键盘模拟鼠标中键拖拽(3d建模、图形设计类应用)助手
首先,双击启动后,程序会最小化至托盘,随时待命。需要模拟中键拖拽时,只需同时按下Ctrl和q键,程序便会启动模拟鼠标中键按下功能。拖拽完成后,再次按下Ctrl和q键,模拟中键弹起,操作流程顺畅。结束后,只需在托盘区右键点击关闭图标,即可退出程序。源代码已分享,对于需要在3d建模或图形设计中使用...

键盘模拟鼠标中键拖拽(3d建模、图形设计类应用)助手
需要进行中键拖拽时,只需同时按下Ctrl和q键,即开启中键按下功能。完成拖拽后,再次按下Ctrl和q键,模拟鼠标中键弹起。操作结束后,右键点击托盘中的图标选择“关闭”即可退出程序。为了满足更多用户需求,提供了源码下载。开发环境要求为VS2022 MFC。如需使用,可自行下载编译。

怎么用MFC的对话框实现手机上记事本功能,不用视图~~~
建议在这个OnMouseMove过程中 添加 POINT point2;GetCursorPos(&point2);\/\/得到鼠标的位置,相对屏幕的 来得到鼠标的坐标。还有个问题是,如果你的 的 窗口(对话框)是当前窗口(活动的,最上的,有输入焦点的),当 鼠标指针 移动到 这个 对话框 以外 时候 ,这个对话框就无法获取鼠标 消息了。解...

相似回答