C++实现鼠标点击和获取鼠标位置(编译环境visual studio 2022)

1环境说明

2获取鼠标位置的接口

cpp 复制代码
void GetMouseCurPoint()
{
    POINT mypoint;

    for (int i = 0; i < 100; i++)
    {
        GetCursorPos(&mypoint);//获取鼠标当前所在位置
        printf("% ld, % ld \n", mypoint.x, mypoint.y);
        Sleep(1000);
    }
}

3操作鼠标左键和右键的接口

cpp 复制代码
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));
}

4鼠标移动的接口

cpp 复制代码
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);

    printf("fScreenWidth %lf , fScreenHeight %lf, fx %lf, fy %lf \n", fScreenWidth, fScreenHeight, fx, fy);

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

5Main函数和头文件

cpp 复制代码
#include <stdint.h>
#include <Windows.h>
#include <stdio.h>

int main()
{
    Sleep(1000);          //延时函数

    GetMouseCurPoint();   //获取鼠标当前所在位置

    MouseMove(x, y);      //x, y坐标从GetMouseCurPoint()的打印中获取

    Sleep(10);            //move之后需要延时

    MouseLeftDown();

    Sleep(1);

    MouseLeftUp();

    Sleep(100);

    return 0;
}

6参考资料和说明

  • 参考链接

http://t.csdnimg.cn/ezeafhttp://t.csdnimg.cn/ezeaf

  • 代码下载链接

https://download.csdn.net/download/u013232419/88808663https://download.csdn.net/download/u013232419/88808663

  • 说明

代码部分已经全部放到正文中了,上述的资料需要下载积分1分(就当懒得复制的分吧,不是很喜欢动不动一个资料需要40多分,期望更多类似的分享)。

相关推荐
{⌐■_■}14 分钟前
【计网】认识跨域,及其在go中通过注册CORS中间件解决跨域方案,go-zero、gin
java·linux·开发语言·c++·中间件·golang·gin
代码程序猿RIP28 分钟前
【C语言干货】回调函数
c语言·开发语言·数据结构·c++·算法
刚入门的大一新生1 小时前
C++初阶-模板初阶
开发语言·数据结构·c++
刃神太酷啦1 小时前
排序--数据结构初阶(4)(C/C++)
c语言·数据结构·c++·算法·leetcode·深度优先·广度优先
胡八一1 小时前
vs2022解决 此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们问题
c++·mfc·visual studio
.hopeful.1 小时前
基于QT的仿QQ音乐播放器
开发语言·c++·qt
是店小二呀1 小时前
【优选算法-二分查找】二分查找算法解析:如何通过二段性优化搜索效率
c++·算法
鑫—萍2 小时前
C++——入门基础
c语言·开发语言·c++·学习·算法
溟洵2 小时前
【C++ Qt】快速上手 显⽰类控件(Label、LCDNumber、ProcessBar、CalendarWidget)
开发语言·c++·qt
半青年3 小时前
单例模式:全局唯一性在软件设计中的艺术实践
java·c++·python·单例模式