关于鼠标模拟程序应用不算少见,在游戏外挂或者一些操作频繁位置确定的程序上应用往往有奇效。

比较旧的API是mouse_event,本人一开始也用这个在搞,不过后来才看到新的API在操作上更加统一,稍作改动便也能模拟键盘输入(两者往往要一起应用),所以就用新的API来做。对了,新的API名为SendInput。

下面就不说废话了,直接上代码,本代码是运行在MFC工程上的,如要需要在控制台或者其他工程上运行要包含必须的头文件。此外,本程序只能模拟一般的鼠标操作,对于一些防外挂的程序进行点击需要驱动级的模拟。

模拟鼠标各动作函数

void MouseMove(int x, int y)//鼠标移动到指定位置
{double fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;//获取屏幕分辨率宽度double fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;//获取屏幕分辨率高度double fx = x*(65535.0f / fScreenWidth);double fy = y*(65535.0f / fScreenHeight);INPUT  Input = { 0 };Input.type = INPUT_MOUSE;Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;Input.mi.dx = fx;Input.mi.dy = fy;SendInput(1, &Input, sizeof(INPUT));
}void MouseLeftDown()//鼠标左键按下
{INPUT  Input = { 0 };Input.type = INPUT_MOUSE;Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;SendInput(1, &Input, sizeof(INPUT));
}void MouseLeftUp()//鼠标左键放开
{INPUT  Input = { 0 };Input.type = INPUT_MOUSE;Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;SendInput(1, &Input, sizeof(INPUT));}void MouseRightDown()//鼠标右键按下
{INPUT  Input = { 0 };Input.type = INPUT_MOUSE;Input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;SendInput(1, &Input, sizeof(INPUT));
}void MouseRightUp()//鼠标右键放开
{INPUT  Input = { 0 };Input.type = INPUT_MOUSE;Input.mi.dwFlags = MOUSEEVENTF_RIGHTUP;SendInput(1, &Input, sizeof(INPUT));
}

各动作函数配合完成鼠标各种操作

//模拟鼠标拖动框选
ShowWindow(SW_SHOWMINIMIZED);//窗体最小化
POINT mypoint;
GetCursorPos(&mypoint);//获取鼠标当前所在位置
MouseMove(800, 1000);//鼠标移动到指定位置
MouseLeftDown();//鼠标左键点下
MouseMove(10, 10);//鼠标拖动到指定位置
Sleep(10);//这里需要等待一下,不然拖动会没有效果
MouseLeftUp();//鼠标释放
MouseMove(mypoint.x, mypoint.y);//将鼠标放回所在的位置
//模拟鼠标右键按下并释放
ShowWindow(SW_SHOWMINIMIZED);//窗体最小化
MouseRightDown();
Sleep(10);
MouseRightUp();

C++ 鼠标模拟程序相关推荐

  1. C++实现鼠标控制 封装常见的模拟鼠标、键盘的操作函数

    API 或 MFC 视窗程序 里 有 函数, 例如 API 函数 设位置: BOOL SetCursorPos( int x, int y); 参数是屏幕坐标x,y 头文件 Winuser.h 链接库 ...

  2. 【青少年编程】【三级】病毒传染模拟程序

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  3. 交互系统的构建之(二)Linux下鼠标和键盘的模拟控制

    交互系统的构建之(二)Linux下鼠标和键盘的模拟控制 zouxy09@qq.com http://blog.csdn.net/zouxy09 交互系统的构建之(一)http://blog.csdn. ...

  4. selenium+Python(鼠标和键盘事件)

    本篇总结了 web 页面常用的一些操作元素方法,可以统称为行为事件 有些 web 界面的选项菜单需要鼠标悬停在某个元素上才能显示出来(如百度页面的设置按钮). 1 简单操作 1.点击(鼠标左键)页面按 ...

  5. python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框

    最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...

  6. Python - selenium_WebDriver 鼠标键盘事件

    from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...

  7. javascript取得鼠标的位置

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. html5页面中鼠标悬停效果,CSS实例:非常不错的鼠标悬停TIP效果!_div+css布局教程...

    在实际开发中,我们会给图片加上alt.给链接加上title,为了出故障预备,也可以提醒用户的内容是什么,或仅仅是tip提示.今天我们介绍一款不错的鼠标悬停TIP效果,图片如下: 这样的效果在实际开发中 ...

  9. html链接伪类设置鼠标悬停,链接伪类可以控制超链接的样式吗?是怎样实现的?...

    定义超链接时,为了提高用户体验,经常需要为超链接指定不同的状态,使得超链接在点击前.点击后和鼠标悬停时的样式不同.在CSS中,通过链接伪类可以实现不同的链接状态,下面将对链接伪类控制超链接的样式进行详 ...

最新文章

  1. 【pytorch】torch.mm,torch.bmm以及torch.matmul的使用
  2. 数学建模学习笔记——主成分分析
  3. 推荐算法工程笔记:PySpark特征工程入门总结
  4. SpringBoot多环境配置与使用
  5. mysql双主多从高可用配置_双主MySQL+keepalived高可用配置
  6. 95-36-020-ChannelHandler-ChannelHandler
  7. 强迫症设计师最爱的对称构图,促销模板
  8. matlab函数isempty_MATLAB的Cell数组操作
  9. leetcode c程序总提示主函数_Python练手:一行Python解Leetcode习题
  10. VB.net WinForm如何写一个分线程进度条
  11. Abelssoft Undeleter(数据恢复软件)v5.01免费版
  12. Java中分布式概念
  13. 国外最流行的几个外包接活网站 简要介绍
  14. macOS - 安装 swig 、PCRE
  15. 1T免费全能空间 注册即可开通
  16. flutter 基础知识点总结
  17. 《代码整洁之道》读后感及总结
  18. 流行和声(4)Major7和弦
  19. 【云图】如何制作东莞酒店地图?
  20. 数据库的schemas(模式)

热门文章

  1. react-navigation 6.x 学习(3)
  2. 高精度室内定位导航 需要什么样的精准室内定位技术方案
  3. 龟兔赛跑预测 【简单模拟】
  4. 你以为的匿名评价,原来并没真的匿名
  5. FreeRtos延时函数delay_us()
  6. 洛谷 P3387 缩点 题解
  7. scala2.11.8安装
  8. 5G NR 缩略语整理
  9. 取消 android 内部收费,国产手机硬伤终于被揭开:若安卓系统下半年收费,该如何应对?...
  10. 文档管理软件在线编辑和协同