VC模拟鼠标的两种方式(SendMessage、mouse_event)
来源:互联网 发布:罗斯福连任 知乎 编辑:程序博客网 时间:2024/06/12 21:35
VC模拟鼠标的两种方式(SendMessage、mouse_event)
鼠标模拟的常用方案,包括发送鼠标事件消息和使用mouse_event系统函数,发送鼠标消息的例子如下:
1
pWnd->SendMessage(WM_RBUTTONDOWN,0,(y<<16)|x);
这种方法不需要窗体在前端,甚至最小化也可以使用,但是此方法并不是在所有场合有效,特别是对于不响应鼠标消息的程序更是如此。在这种情况下,可以尝试使用mouse_event函数。
首先给出mouse_event函数的原型:
1
2
3
4
5
6
7
8
VOID
mouse_event(
DWORD
<em>dwFlags</em>,
DWORD
<em>dx</em>,
DWORD
<em>dy</em>,
DWORD
<em>dwData</em>,
ULONG_PTR
<em>dwExtraInfo</em>
);
mouse_event有五个参数,第 一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息;第二、三个参数分别表示模拟鼠标对应x,y的位置,需要注意测是该参数对应的是屏幕坐标;第四、五个参数并不重要,一般也可设为0,0。若要得到Keybd_event和mouse_event函数的更详细的用法,可以查阅msdn。
mouse_even只能够发送前台消息,即仅对当前激活的窗体有效。t最好配合SetCursorPos(x,y)函数一起使用,首先调用SetCursorPos函数设置鼠标位置到需要模拟鼠标操作的位置,然后调用mouse_event模拟鼠标操作,下面是关于mouse_event的示例代码:
1
2
3
4
5
POINT lpPoint;
GetCursorPos(&lpPoint);
SetCursorPos(lpPoint.x, lpPoint.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
示例代码表示鼠标的双击,若要表示单击,用两个mouse_event即可(一次放下,一次松开)。
上面说明了模拟鼠标操作的两种常用方法,下面再给出一个综合实例进行阐述说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//在发送按键消息前需要设置下鼠标位置,扫雷程序似乎是根据鼠标位置
//确定点击的方块的,而不是鼠标消息的参数
//所以PostMessage在这里也不可以使用
::SetCursorPos(x,y);
//判断是否是雷,不是雷才执行鼠标点击动作
if
(MineInf[acol*row+arow]==1){
/*::mouse_event(MOUSEEVENTF_RIGHTDOWN,x,y,0,0);
::mouse_event(MOUSEEVENTF_RIGHTUP,x,y,0,0); */
pWnd->SendMessage(WM_RBUTTONDOWN,0,(y<<16)|x);
pWnd->SendMessage(WM_RBUTTONUP,0,(y<<16)|x);
}
else
{
/*::mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
::mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);*/
pWnd->SendMessage(WM_LBUTTONDOWN,0,(y<<16)|x);
pWnd->SendMessage(WM_LBUTTONUP,0,(y<<16)|x);
}
好了,这就是目前使用最多的VC程序进行鼠标事件模拟的两种方案,读者可以根据实际情况选择使用。
0 0
- VC模拟鼠标的两种方式(SendMessage、mouse_event)
- mouse_event模拟鼠标点击
- vc模拟鼠标键盘操作实用类mouse_event
- VB 模拟鼠标点击 Mouse_Event
- mouse_event 鼠标模拟(转集)
- 模拟键盘、鼠标 mouse_event keybd_event
- keybd_event,mouse_event 模拟产生键盘事件、鼠标事件的使用
- keybd_event/mouse_event和SendMessage/PostMessage的区别
- keybd_event/mouse_event和SendMessage/PostMessage的区别 .
- c# 调用API mouse_event 模拟鼠标事件
- 用Mouse_event()来模拟鼠标操作
- c# 调用API mouse_event 模拟鼠标事件
- 用Mouse_event()来模拟鼠标操作
- keybd_event和mouse_event完全彻底细致的模拟鼠标键盘所有动作
- 易语言- 调用API两种方法移动鼠标 SetCursorPos mouse_event
- mouse_event(模拟鼠标)和keybd_event(模拟键盘)
- webBroswer SendMessage 模拟鼠标点击
- VC++ mouse_event
- 操作系统 进程管理之进程与线程
- Excel解决格式与文件扩展名不一致的两种方法
- Oozie 安装部署
- 【并查集】并查集详解(转)
- 从零开始搭建maven+springmvc+mybatis web项目(1)---maven项目目录创建
- VC模拟鼠标的两种方式(SendMessage、mouse_event)
- Trapping Rain Water II
- 解决80端口被占用
- 在Windows下使用Curl工具完美操作ElasticSearch
- AndroidStudio项目提交(更新)到github最详细步骤
- 【Maven】mybatis-generator-maven-plugin 使用
- 校门外的树木
- Qt实现窗体在显示屏旁边自动隐藏(类似QQ)
- 在阿里云盘扩容过程中遇到的坑