
实现代码
#include "stdafx.h"
#include <Windows.h>
//pos_x pos_y移动的目的坐标 speed 速度 (0 - 100)
void move_mouse(int pos_x,int pos_y,int speed = 80){
int cx_screen = ::GetSystemMetrics(SM_CXSCREEN);
int cy_screen = ::GetSystemMetrics(SM_CYSCREEN);
for(int i = 0;;i++){
POINT point;
//获取鼠标当前位置
GetCursorPos(&point);
//指定每次移动距离
int x_move = pos_x - point.x;
int y_move = pos_y - point.y;
if(x_move > 10){
x_move = 10;
}
if(x_move < -10){
x_move = -10;
}
if(y_move > 10){
y_move = 10;
}
if(y_move < -10){
y_move = -10;
}
INPUT input;
input.type = INPUT_MOUSE;
input.mi.dx = x_move;
input.mi.dy = y_move;
input.mi.mouseData = 0;
input.mi.dwFlags = MOUSEEVENTF_MOVE;
input.mi.time = 0;
input.mi.dwExtraInfo = 0;
SendInput(1,&input,sizeof(INPUT));
//判断是否移动到终点
if((pos_x - point.x< 10&&pos_x - point.x>- 10)&&(pos_y - point.y< 10&&pos_y - point.y>- 10)){
INPUT input;
input.type = INPUT_MOUSE;
input.mi.dx = pos_x-point.x ;
input.mi.dy = pos_y-point.y;
input.mi.mouseData = 0;
input.mi.dwFlags = MOUSEEVENTF_MOVE; //MOUSEEVENTF_ABSOLUTE 代表决对位置 MOUSEEVENTF_MOVE代表移动事件
input.mi.time = 0;
input.mi.dwExtraInfo = 0;
SendInput(1,&input,sizeof(INPUT));
break;
}
Sleep(100 - speed);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int x,y;
printf("输入目的x y坐标:");
scanf_s("%d %d",&x,&y);
//scanf("%d %d",&x,&y);
move_mouse(x,y);
return 0;
}