鼠标的控制和移动

dnf回归,想挂机,但怕被封......记录一下
ps:或许可以使用物理外挂,即用串口模块,利用另一台电脑来操控
也可以借助单片机
本文两部分:1. 控制鼠标和键盘的输入 2. 获取鼠标的实时坐标
需要的库:
移动鼠标和出发鼠标事件:

/*https://blog.csdn.net/qq_35409640/article/details/75212236解说*/
int main() {
    while (1) {
        Sleep(3000); //延时函数,3000延时3000毫秒,即3秒
        SetCursorPos(0, 0);//设置鼠标坐标
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//左键按下和抬起的动作,即单击左键的动作
        mouse_event(MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_LRIGHTUP, 0, 0, 0, 0);//点击右键
//两次连续的鼠标左键单击事件 构成一次鼠标双击事件
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 
        return 0;
    }
}

控制键盘的输入

    //字母
    keybd_event('A', 0, 0, 0); //按下
    keybd_event('A', 0, 2, 0); //松开
    //回车
    keybd_event(0x0d, 0, 0, 0);
    keybd_event(0x0d, 0, 2, 0);

mouse_enent函数的参数意义:
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

参数 意义
dwFlags Long,下表中标志之一或它们的组合
dx,dy Long,根据MOUSEEVENTF_ABSOLUTE标志,指定x,y方向的绝对位置或相对位置
cButtons Long,没有使用
dwExtraInfo Long,没有使用

dwFlags常数 意义

const int MOUSEEVENTF_MOVE = 0x0001; 移动鼠标
const int MOUSEEVENTF_LEFTDOWN = 0x0002; 模拟鼠标左键按下
const int MOUSEEVENTF_LEFTUP = 0x0004; 模拟鼠标左键抬起
const int MOUSEEVENTF_RIGHTDOWN = 0x0008; 模拟鼠标右键按下
const int MOUSEEVENTF_RIGHTUP = 0x0010; 模拟鼠标右键抬起
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; 模拟鼠标中键按下
const int MOUSEEVENTF_MIDDLEUP = 0x0040; 模拟鼠标中键抬起
const int MOUSEEVENTF_ABSOLUTE = 0x8000; 标示是否采用绝对坐标

使用绝对坐标
MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0

需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点。5、直接设定绝对坐标并单击
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
其中X,Y分别是你要点击的点的横坐标和纵坐标

获取鼠标的实时坐标:

#include
 
void main()
{
    LONG zx = -1;
    LONG zy = -1;
    POINT ptB = { 0, 0 };
    /*
    typedef struct tagPOINT
    {
        LONG  x;
        LONG  y;
    } POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;
    */
    while (1)
    {               
        LPPOINT xy = &ptB;  //位置变量
        GetCursorPos(xy);   //获取鼠标当前位置      
        //如果鼠标移动,(即当前的坐标改变则打印出坐标)打印出做坐标。
        if ((zx != xy->x) || (zy != xy->y))
        {
            printf("x=%d,y=%d\n", xy->x, xy->y);
            zx = xy->x;
            zy = xy->y;
        }           
    }   
}
--------------------- 
作者:liuguangsh 
来源:CSDN 
原文:https://blog.csdn.net/liuguangsh/article/details/50666763 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(鼠标的控制和移动)