在完成实例之前,我们先来学习mouse_event()这个函数

函数功能:该函数综合鼠标击键和鼠标动作。

  函数原型:

  VOID mouse_event(

  DWORD dwFlags, // motion and click options

  DWORD dx, // horizontal position or change

  DWORD dy, // vertical position or change

  DWORD dwData, // wheel movement

  ULONG_PTR dwExtraInfo // application-defined information

  );

  参数:

  dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下列值的任何合理组合:

  MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。如果不设置此位,参数含有相对数据:相对于上次位置的改动位置。此标志可被设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参见下面备注部分。

  MOUSEEVENTFMOVE:表明发生移动。

  MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。

  MOUSEEVENTF_LEFTUP:表明松开鼠标左键。

  MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。

  MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。

  MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。

  MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。

  MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。

  dx:指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLOTE的设置。给出的绝对数据作为鼠标的实际X坐标;给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量,表明鼠标已经移动。

  dy:指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLVTE的设置。给出的绝对数据作为鼠标的实际y坐标,给出的相对数据作为移动的mickeys数。

  dwData:如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。

  如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。

  dwExtralnfo:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessgeExtrajnfo来获得此附加信息。

  返回值:无。

  备注:如果鼠标被移动,用设置MOUSEEVENTF_MOVE来表明,dX和dy保留移动的信息。给出的信息是绝对或相对整数值。

  如果指定了MOUSEEVENTF_ABSOLOTE值,则dX和dy含有标准化的绝对坐标,其值在0到65535之间。事件程序将此坐标映射到显示表面。坐标(0,0)映射到显示表面的左上角,(6553,65535)映射到右下角。

  如果没指定MOUSEEVENTF_ABSOLOTE,dX和dy表示相对于上次鼠标事件产生的位置(即上次报告的位置)的移动。正值表示鼠标向右(或下)移动;负值表示鼠标向左(或上)移动。

  鼠标的相对移动服从鼠标速度和加速度等级的设置,一个最终用户用鼠标控制面板应用程序来设置这些值,应用程序用函数SystemParameterslnfo来取得和设置这些值。

学习了mouse_event()这个函数以后,我们也都知道SetCursorPos这个函数是设置鼠标的位置,因此我们就很容易的想到先把鼠标移动到我们所要点击的按钮的位置,然后再调用mouse_event()这个函数来完成点击事件,这样就完成了。

当然了有的朋友会说我们做这个点击希望鼠标好像没有移动过一样,上面我们知道SetCursorPos这个函数是用来设置鼠标的位置,那么应该也会有个函数是用来获得鼠标当前的位置,由Set我们很容易的就想到了GetCursorPos,答对了,所以我们可以先获取当前鼠标的位置,然后再把鼠标移动到我们想要点击的位置,接着完成点击,最后将鼠标移回原来的位置。

下面是实例代码:

void CMouseEventDlg::OnButton1()
{

//模拟鼠标点击
 CPoint point;
 GetCursorPos(&point);
 SetCursorPos( 47,729);//这个坐标是“开始”这个菜单在我当前电脑屏幕上的位置,大家可以自己去获取
 mouse_event( MOUSEEVENTF_LEFTDOWN, 0,0,0,NULL);//鼠标down事件
 mouse_event( MOUSEEVENTF_LEFTUP, 0,0,0,NULL);//鼠标up事件
 SetCursorPos(point.x,point.y);

这里用的是MOUSEEVENTF_LEFTDOWN和MOUSEEVENTF_LEFTUP,如果是左撇子的话应该改为MOUSEEVENTF_RIGHTDOWN和MOUSEEVENTF_RIGHTUP的。

当然了如何判断可以看看我的相关文章:判断当前鼠标的主键是左键还是右键

VC 动态控制鼠标点击事件相关推荐

  1. css禁用鼠标点击事件

    1.css禁用鼠标点击事件 .disabled { pointer-events: none; } 转载于:https://www.cnblogs.com/jiangtuzi/p/5728230.ht ...

  2. android 模拟点击localinstrumentation,Android Instrumentation模拟鼠标点击事件

    看了几遍网上的博客一直没有 模拟出鼠标点击事件和按钮事件,后来抱着试试态度再重试的时候终于有所斩获.下面把具体的情况记录一下: 首先我们必须了解类 Instrumentation: Instrumen ...

  3. [css] 怎样用纯CSS实现禁止鼠标点击事件?

    [css] 怎样用纯CSS实现禁止鼠标点击事件? pointer-events: none; 是css3新出现的属性,意思就是禁止鼠标点击事件,当元素中有这一属性时,链接.点击事件统统失效. 个人简介 ...

  4. 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口

    由于ComboBox没有鼠标点击信号,所以如果想实现点击下拉框响应,需要重写ComboBox下拉框的鼠标点击事件.在点击事件中,添加扫描可用串口代码,实现点击下拉框时重新扫描串口.并且下拉框内容输出端 ...

  5. QT之鼠标点击事件学习

    最近在学习点击鼠标事件,在这分享给大家 window.h中的配置 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow& ...

  6. java鼠标点击事件_Java 鼠标点击事件实例

    首先我们应该知道鼠标点击事件怎么实现 其部分代码如下 if (anyEvent.getButton() == MouseEvent.BUTTON1) {} e.getButton()返回值分别为NOB ...

  7. java 鼠标点击按钮事件_Java 鼠标点击事件实例

    首先我们应该知道鼠标点击事件怎么实现 其部分代码如下 if (anyEvent.getButton() == MouseEvent.BUTTON1) {} e.getButton()返回值分别为NOB ...

  8. QT之QLineEdit——实现鼠标点击事件

    QLineEdit添加鼠标点击事件主要分为三步: 重写lineEdit类(MyLineEdit) 添加相应的启动的信号和槽的事件 将使用时的QLineEdit提升为自己写的类 重写lineEdit类 ...

  9. PyQt5 鼠标点击事件(点击响应事件可自定义):鼠标单击、双击、滚轮滚动、释放、移动等

    自己写通了最常用的鼠标事件,具体响应事件,大家可以自定义,实现的效果如下: 具体代码如下,有任何问题,欢迎小伙伴们交流讨论. # -*- coding: utf-8 -*- ""& ...

最新文章

  1. CodeGen编写自定义表达式标记
  2. 2018 re:Invent回顾篇:前线开发者眼中AWS的创新版图
  3. Spring Boot + Mybatis + Shiro 后台权限管理系统
  4. window.postMessage实现网页间通信
  5. mongodb c++ driver安装踩坑记
  6. 浅析java中的语法糖
  7. svn 设置post-commit后 报错svn: Can't convert string from 'UTF-8' to native encoding
  8. spark入门_Spark技术入门——配置部署、SparkSQL应用
  9. gethostbyname()函数说明
  10. 计算机辅助设计A卷,《计算机辅助设计》考试试卷A.doc
  11. mysql referential_constraints_hibernate4.3.8与spring mvc结合遇到的问题
  12. Android开发环境搭建Eclipse+JDK+ADT+AVD(系列一)
  13. Python 为什么要用线程池?
  14. leetcode 1518 换酒问题
  15. 政务云存储 备份方案_最佳的在线备份和云存储解决方案
  16. 从零开始SpringCloud Alibaba实战(48)——阿里开发手册泰山版学习笔记二 日期时间 集合处理 并发处理
  17. 计算机坏处英语,玩电脑的危害英语作文,沉迷电脑的危害英语作文!
  18. Digital Booklet - Taylor Swift Karao-pdf
  19. [因子背包] CF1647D Madoka and the Best School in Russia
  20. SODA-大型活动大规模人群的识别和疏散:从公交2.0到公交3.0

热门文章

  1. Koltin26,flutter人脸识别模块
  2. NBA球员总得分预测——K近邻算法
  3. 2016年下半年软考信息安全工程师上午真题及答案解析
  4. MYSQL(二) SQL通用语法及分类及DDL(对数据库和表操作)的使用
  5. NAND Flash 和 NOR Flash原理和差异对比
  6. ConvTranspose2d原理,深度网络如何进行上采样?
  7. 泰拉瑞亚手机版html,泰拉瑞亚手机版幽灵套装怎么做 幽灵套装ID和属性详解
  8. jquery.lazyload-1.9.3中文文档 -- 延迟加载图片的jQuery插件
  9. 掌柜大作战(10):人脸识别和图像识别,Java程序员的宿命
  10. 项目管理具有的基本特点