C++实现鼠标点击和获取鼠标位置(编译环境visual studio 2022)
1环境说明
2获取鼠标位置的接口
void GetMouseCurPoint()
{
POINT mypoint;
for (int i = 0; i < 100; i++)
{
GetCursorPos(&mypoint);//获取鼠标当前所在位置
printf("% ld, % ld \n", mypoint.x, mypoint.y);
Sleep(1000);
}
}
3操作鼠标左键和右键的接口
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鼠标移动的接口
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函数和头文件
#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多分,期望更多类似的分享)。