想用sendmessage()来模拟按下已经创建好了的一个按钮,请问四个参数分别应该怎么设置啊
1条回答 默认 最新
- qfl_sdu 2021-06-08 18:15关注
参考这个文章(http://www.360doc.com/content/15/0719/17/15242507_486015983.shtml)
用SPY++获得了QQ连连看的 开始按钮坐标!
利用坐标写了如下代码:
m_hGame = FindWindow(NULL, "QQ游戏 - 连连看角色版");
int lparam;
lparam = ((562)<<16) + 664;
lparam = ((562)<<16)+(664);
SendMessage(m_hGame, WM_LBUTTONDOWN, 0, lparam);
SendMessage(m_hGame, WM_LBUTTONUP, 0, lparam);
SendMessage(m_hGame, WM_LBUTTONDOWN, 0, lparam);
SendMessage(m_hGame, WM_LBUTTONUP, 0, lparam);上述代码不能实现开始按钮的点击这是怎么回事???
上述代码应该是属于软件模拟,所以我尝试了使用硬件模拟:
//获取游戏窗口句柄
HWND gameh;
gameh=::FindWindow(NULL,"QQ游戏 - 连连看角色版");
CRect r1;
::GetWindowRect(gameh,&r1);
//保存当前鼠标指针
//取得当前鼠标位置
CPoint p;
GetCursorPos(&p);
//设置鼠标指针位置 取开局所在坐标:x=655;y=577 //lparam 0x0241028f
SetCursorPos(655+r1.left,577+r1.top);
//模拟鼠标的 单击(鼠标按下/鼠标抬起)
//MOUSEEVENTF_LEFTDOWN Specifies that the left button is down.
//MOUSEEVENTF_LEFTUP
//鼠标在当前位置按下
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
//鼠标在当前位置抬起
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
//还原鼠标位置
Sleep(200);//过一段时间 再执行后边的代码
SetCursorPos(p.x,p.y);
利用这段代码就正确实现了开始按钮的点击!本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题