100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 如何使用SendMessage函数实现模拟鼠标点击按钮事件?(内有两种代码比较)

如何使用SendMessage函数实现模拟鼠标点击按钮事件?(内有两种代码比较)

时间:2024-02-17 20:50:36

相关推荐

如何使用SendMessage函数实现模拟鼠标点击按钮事件?(内有两种代码比较)

用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);

利用这段代码就正确实现了开始按钮的点击!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。