21xrx.com
2024-06-03 11:08:23 Monday
登录
文章检索 我的文章 写文章
C++移动鼠标位置并实现点击功能
2023-07-04 01:48:04 深夜i     --     --
C++ 移动鼠标 位置 点击功能

在C++编程中,经常会遇到需要模拟鼠标点击或者移动鼠标位置的情况,比如自动化测试脚本的编写、游戏外挂开发等等。如果我们能够实现这些功能,那么我们就能够大大提高程序的自动化程度,减少人工操作的时间和出错的概率。

在本文中,我们将介绍如何使用C++来移动鼠标位置并实现点击功能。

一、获取屏幕分辨率

在开始编写代码之前,我们首先需要获取屏幕的分辨率,以便于后面计算鼠标坐标。获取屏幕分辨率的方法如下:


#include <iostream>

#include <windows.h>

int main() {

  int screenWidth = GetSystemMetrics(SM_CXSCREEN);

  int screenHeight = GetSystemMetrics(SM_CYSCREEN);

  std::cout << "Screen resolution: " << screenWidth << "x" << screenHeight << std::endl;

  return 0;

}

上述代码通过调用Windows API的GetSystemMetrics函数获取了屏幕的横向和纵向分辨率,并打印在了控制台中。该函数可以在Windows.h头文件中找到。

二、移动鼠标位置

在获取屏幕分辨率之后,我们就可以开始编写实现鼠标移动功能的代码了。代码如下:


#include <windows.h>

void moveMouse(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 mouseInput = { 0 };

  mouseInput.type = INPUT_MOUSE;

  mouseInput.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;

  mouseInput.mi.dx = fx;

  mouseInput.mi.dy = fy;

  SendInput(1, &mouseInput, sizeof(INPUT));

}

在上述代码中,我们使用了Windows API的SendInput函数实现了鼠标的移动功能。在鼠标移动时,我们需要将鼠标坐标转换为绝对坐标,然后将转换后的坐标信息打包成一个INPUT结构体并传递给SendInput函数即可。

三、实现鼠标点击功能

在移动鼠标的基础上,我们可以很方便地实现鼠标点击功能。下面是编写代码的示例:


void leftClick() {

  INPUT mouseInput = { 0 };

  mouseInput.type = INPUT_MOUSE;

  mouseInput.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;

  SendInput(1, &mouseInput, sizeof(INPUT));

  mouseInput.mi.dwFlags = MOUSEEVENTF_LEFTUP;

  SendInput(1, &mouseInput, sizeof(INPUT));

}

void rightClick() {

  INPUT mouseInput = { 0 };

  mouseInput.type = INPUT_MOUSE;

  mouseInput.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;

  SendInput(1, &mouseInput, sizeof(INPUT));

  mouseInput.mi.dwFlags = MOUSEEVENTF_RIGHTUP;

  SendInput(1, &mouseInput, sizeof(INPUT));

}

在上述代码中,我们定义了两个函数leftClick和rightClick,分别代表鼠标左键和右键的点击操作。同样地,我们使用了INPUT结构体和SendInput函数实现了鼠标点击功能。

总结

本文介绍了如何使用C++编写代码实现移动鼠标位置和实现鼠标点击功能。这些功能的实现可以帮助我们提高程序的自动化程度,减少人工操作的时间和出错的概率,对于自动化测试、游戏外挂等应用场景都有很大的帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复