首页 C/C++修行正文

C++获取屏幕指定位置坐标,并模拟鼠标无限制单击

欲儿 C/C++修行 2019-07-15 584 0

我简单的封装了一下,就变成了一个脚本的程序了,嗯,先获取坐标,再去模拟单击

#include <stdio.h>
#include<windows.h>
#include<conio.h>
#include <iostream>
using namespace std;
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) 

void get()
{
	LONG x = -1, y = -1;
	POINT pt = { 0, 0 };
	while (true)
	{
		GetCursorPos(&pt);    //获取鼠标当前位置      
		if ((x != pt.x) || (y != pt.y)) //如果位置与之前的位置不一样则输出新位置
		{
			printf("x=%d,y=%d\n", pt.x, pt.y);
			x = pt.x, y = pt.y;
		}
	}
}

void click(int x,  int y)
{
	int ret = 0;
	while (true)
	{
		if (KEY_DOWN('Q'))//q是开
		{
			 ret = 1;
		}
		else if (KEY_DOWN('W'))//w是关
		{
		     ret = 0;
		}
		else 
		{
			if (ret == 1)
			{
				SetCursorPos(x, y);
				mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
				Sleep(10);
				mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
			}
			else if (ret == 0)
			{
				Sleep(100);
			}
		}
	}
}

void menu()
{
	cout << "Welcome to Here ——YuEr" << endl;
	cout << "1.刷新菜单" << endl;
	cout << "2.开启坐标侦测模式" << endl;
	cout << "3.模拟单击程序( “Q” 开始 “W” 暂停 不区分大小写)" << endl;
}




int main()
{
	menu();
	int temp;
	while (true)
	{
		cin >> temp;
		if (temp == 1)
		{
			menu(); 
		}
		else if (temp == 2)
		{
			get();
		}
		else if (temp == 3)
		{
			int x, y;
			cout << "请输入X坐标:";
			cin >> x;
			cout << "请输入Y坐标:";
			cin >> y;
			click(x, y);
		}
	}
	while (1);
	return 0;
}


先输入2命令以后。鼠标每次更新位置就打印出一次坐标值

image.png



你只需要记住需要用到的X Y 坐标然后去 3命令里面输入,然后按Q就开始点击,按W就暂停,OK啦

image.png

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论