`

C++ 鼠标模拟程序

    博客分类:
  • C++
阅读更多
转自
http://blog.csdn.net/weixinhum/article/details/46351881

    关于鼠标模拟程序应用不算少见,在游戏外挂或者一些操作频繁位置确定的程序上应用往往有奇效。
    比较旧的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();


    //左键双击打开
    MouseMove(100, 100);//鼠标移动到指定位置  
    MouseLeftDown();//鼠标左键点下  
    MouseLeftUp();//鼠标释放 
    MouseLeftDown();//鼠标左键点下  
    MouseLeftUp();//鼠标释放 
分享到:
评论

相关推荐

    C++鼠标模拟程序.rar

    C++鼠标模拟程序

    C++模拟鼠标点击、键盘按下工具

    模拟鼠标点击工具,该工具可以模拟鼠标的点击还有键盘的按下动作。可以完成重复点击的工作。

    C++代码实现Windows系统下发送鼠标移动和单击的程序

    c++代码实现系统层发送鼠标移动和单击消息,可实现模拟人工点按某个按钮的功能。基于此代码可进行功能扩充,例如录制多个按钮位置实现组合操作的自动化执行。

    C++模拟屏幕点击程序(测试程序)

    用C++语言编写~~~ 调用系统的函数来模拟鼠标点击事件

    鼠标点击模拟程序,类似按键最简单的功能

    使用C#2008写的鼠标点击模拟程序,包含源代码和程序;使用程序的人必须下载微软的dotnet framework 3.5; 学习的人使用C# 2008

    键盘模拟鼠标 c++

    本程序能实现键盘的上下左右建 来移动鼠标。 f6控制鼠标左键, f9 结束程序。

    C++ 模拟电子时钟程序

    一个模拟时钟程序。在屏幕中央有一正在运行的指针式钟表,单击鼠标左键可弹出一对话框,用于调整当前时间。

    基于C++ Qt 5.15 的B样条曲线绘制程序

    基于C++的B样条曲线绘制程序 本程序基于C++开发,其开发环境为: ·Windows 11操作系统 ·Qt 5.15.2 MSV2019 64bit Release构建套件 本程序具体可实现功能如下: 1) 输入控制点,显示控制点和控制线,如图1中白色点...

    虚拟鼠标驱动程序源代码

    本资源包含 虚拟鼠标驱动程序源代码 及 最新驱动程序开发包WDK(WDK是WIN10平台下的SDK,如在其他平台,请下载相应的开发包)。安装SDK成功后,可在Visual Studio 2017下成功编译(Visual Studio 2012,Visual Studio ...

    KinectV2 实现鼠标控制(VS2013 C++版)

    这里提供一个kinectV2控制鼠标的C++版本程序,同时包含Chengaotan版本的C#程序供参考,Kinect 自身可实现三种手势的识别,拳头,剪刀,和布,从而可控制鼠标做不同的事情;本人已将其运用到体感游戏打飞机上,效果...

    77G 22套C语言 C++ 数据结构 程序设计视频课程合集 C丨C++相关学习视频全套视频教程

    036.MFC_模拟鼠标键盘消息.mp4 037..创建进程.mp4 038.打开进程_终止进程.mp4 039..TH_管道.mp4 040..TH_双管道.mp4 041.MFC_只运行一个实例.mp4 042.内存映射文件.mp4 043.内存映射_共享数据.mp4 044.枚举...

    C++Builder 资料库

    6.用C++ Builder 3制作屏幕保护程序 7.TCP/IP头格式 8.UDP 9.判断windows的Desktop及其它目录 10用C++Builder创建数字签名 11用Enter 键控制焦点切换的方法 12.拦 截 Windows 消 息 13.使用CommaText 14....

    c++ mfc 模拟ATM取款机 界面以及语音提示

    3)程序登录界面上的数字键需要用鼠标单击,为了方便退出,我没有自动获取焦点,请输入时手动获取编辑框焦点 4)运行前,请打开你的放音设备,否则语音不能工作 其他: 1)已经编译好的程序为ATM.exe 在ATM文件夹...

    基于c++数字逻辑电子仿真器

    输入结点和输出结点的这样判断,一眼看上去似乎反了,但实际上有利于整个程序的编写。可以简单地这样分类:总共只有两种端,一种输入,一种输出。 这样,我们就可以将判断触点分为三个函数: IsInInput1()...

    鼠标脚本精灵.rar

    一个简单的C++实现的鼠标操作录制并执行的小程序,支持定义循环次数,循环间隔,具体使用说明可以参考我的博文: https://blog.csdn.net/qq_42799236/article/details/107030999;

    基于C++的游戏操纵杆模拟鼠标的程序

    要编写一个支持游戏操纵杆的应用程序,首先必须要捕获游戏操纵杆,接着要处理Windows发送给程序窗口的操纵杆消息,最后使用完操纵杆后,还应将捕获的操纵杆资源释放。  调用API函数joySetCapture能捕获游戏操纵杆...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    2.10 控件数组典型实例 cc实例076 向窗体中动态添加控件 cc 实例077 公交线路模拟 第3章 图形技术 3.1 绘制图形 cc实例078 绘制正弦曲线 cc实例079 绘制艺术图案 cc实例080 画图程序 cc实例081 ...

    基于C++模拟车床(计算机图形学大作业)【100013175】

    程序运行初始处于车削模式下使用鼠标交互控制进行切削,当按下鼠标之后,刀具会出现,拖动鼠标可模拟车床车削工作松开鼠标时不能进行车削 按下R,重置成原材料按下E,切换原料材质 在车削模式下按下W,进入贝塞尔...

    Visual C++程序开发范例宝典(PDF扫描版).part3

    cc 实例077 公交线路模拟  第3章 图形技术   3.1 绘制图形   cc实例078 绘制正弦曲线   cc实例079 绘制艺术图案   cc实例080 画图程序   cc实例081 绘制立体模型   cc实例082 利用IFS算法绘制...

    Visual C++程序开发范例宝典(PDF扫描版).part2

    cc 实例077 公交线路模拟  第3章 图形技术   3.1 绘制图形   cc实例078 绘制正弦曲线   cc实例079 绘制艺术图案   cc实例080 画图程序   cc实例081 绘制立体模型   cc实例082 利用IFS算法绘制...

Global site tag (gtag.js) - Google Analytics