C++鼠标模拟

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);  
        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));  
    }  
      
    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));  
    }  


  各动作函数配合完成鼠标各种操作
//模拟鼠标拖动框选  
ShowWindow(SW_SHOWMINIMIZED);//窗体最小化  
POINT mypoint;  
GetCursorPos(&mypoint);//获取鼠标当前所在位置  
MouseMove(800, 1000);//鼠标移动到指定位置  
MouseLeftDown();//鼠标左键点下  
MouseMove(10, 10);//鼠标拖动到指定位置  
Sleep(10);//这里需要等待一下,不然拖动会没有效果  
MouseLeftUp();//鼠标释放  
MouseMove(mypoint.x, mypoint.y);//将鼠标放回所在的位置


    //模拟鼠标右键按下并释放  
    ShowWindow(SW_SHOWMINIMIZED);//窗体最小化  
    MouseRightDown();  
    Sleep(10);  
    MouseRightUp();  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值