SendMessage, postmessage模拟鼠标左键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SendMessage, postmessage模拟鼠标左键相关的知识,希望对你有一定的参考价值。
我想用sendmessage或者是postmessage模拟鼠标左键,点击一个窗口的指定位置,需要带坐标,窗口不是当前窗口,不能用MOUSE_EVENT之类的,只能用sendmessage或POSTMESSAGE,特别是需要带坐标,非常感谢,
SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));SendMessage(hWnd, WM_LBUTTONUP, NULL, MAKELPARAM(x, y));
hWnd 是发送的目标控件句柄,x、y 是鼠标相对于该控件客户区左上角的坐标,如 0、0 就表示在目标句柄的控件左上方点击,而非屏幕坐标。 参考技术A sendmessage或POSTMESSAGE 模拟鼠标左键参数 是一样的
SendMessage(hwnd,WM_LBUTTOMDOWN,0,YX);//鼠标左键的按下
SendMessage(hwnd,WM_LBUTTOMUP,0,YX); //鼠标左键的抬起
hwnd 是窗口的句柄 (可以通过FindWindow的返回值得到)
YX 是指坐标的 (X,Y) 但是 y为高16位X为低16位 通过位运算来实现 (y<<16)+x
MFC发送自定义消息-PostMessage和SendMessage
PostMessage:把消息投放到线程的消息队列,不能消息被处理就立即返回
SendMessage:消息被处理完后才返回
几种发送消息的写法:
::PostMessage(GetSafeHwnd(), WM_USER_THREADEND, 0, 0); //GetSafeHwnd()表示得到当前窗口句柄,所以这条语句是发送给当前窗口
GetParent()->PostMessage(WM_USER_THREADEND, 0, 0);//发送给父窗口
this->PostMessage(WM_USER_THREADEND, 0, 0);//发送给当前窗口
HWND h= ::FindWindow(NULL, _T("窗口名字"));
::PostMessage(h, WM_PARASET, 0, 0);//发送给任意窗口
SendMessage也是同样的用法。
MFC发送自定义消息请参考:http://blog.csdn.net/penpenandtongtong/article/details/18598907
以上是关于SendMessage, postmessage模拟鼠标左键的主要内容,如果未能解决你的问题,请参考以下文章
delphi 中 postmessage 和sendmessage用法
消息与函数,postmessage与sendmessage,该怎么解决
sendmessage、postmessage和直接调用该对话框的方法,有何区别,那个好一点?