当前位置:网站首页 > 编程语言 > 正文

mouse按键(mousel是哪个按键)



可以实现模拟鼠标滚轮滑动,键盘,键盘加鼠标的组合,唯一问题是360会阻碍对sendinput函数的调用。所以在桌面时会失效。当然解决这个问题我们必须通过winIO这个

桥梁实现。若大家感兴趣可以去看一看。后面我附上源码,请看友批评指正。

#include "stdafx.h"

#include "VirtualInput.h"


#include "windows.h"



void VirtualInput::MouseLeftClick()


{


INPUT    Input = { 0 };


// 左键按下


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;


::SendInput(1, &Input, sizeof(INPUT));


// 左键抬起


::ZeroMemory(&Input, sizeof(INPUT));


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;


::SendInput(1, &Input, sizeof(INPUT));


}


void VirtualInput::MouseRightClick()


{


INPUT    Input = { 0 };


// 右键按下


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;


::SendInput(1, &Input, sizeof(INPUT));


// 右键抬起


::ZeroMemory(&Input, sizeof(INPUT));


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_RIGHTUP;


::SendInput(1, &Input, sizeof(INPUT));


}


void VirtualInput::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 = (long)(fx);


Input.mi.dy = (long)(fy);


::SendInput(1, &Input, sizeof(INPUT));


}


//鼠标中伦点击事件


void VirtualInput::MouseWheelClick()


{


INPUT    Input = { 0 };


// 设置滚轮量


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_WHEEL;


Input.mi.mouseData = 500;


::SendInput(1, &Input, sizeof(INPUT));


}


//离开用户方向滚动


void VirtualInput::MouseWheelDirectUp(int wheelUValue)


{


INPUT    Input = { 0 };


// 设置滚轮量


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_WHEEL;


Input.mi.mouseData = wheelUValue*120;


::SendInput(1, &Input, sizeof(INPUT));


}


//进入用户方向滚动


void VirtualInput::MouseWheelDirectDown(int wheelDValue)


{


INPUT    Input = { 0 };


// 设置滚轮量


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_WHEEL;


Input.mi.mouseData = -wheelDValue*120;


::SendInput(1, &Input, sizeof(INPUT));


}


//


void VirtualInput::MouseDLeftClick()


{


INPUT    Input = { 0 };


// 左键按下


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;


::SendInput(1, &Input, sizeof(INPUT));


// 左键抬起


::ZeroMemory(&Input, sizeof(INPUT));


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;


::SendInput(1, &Input, sizeof(INPUT));




::ZeroMemory(&Input, sizeof(INPUT));




Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;


::SendInput(1, &Input, sizeof(INPUT));


// 左键抬起


::ZeroMemory(&Input, sizeof(INPUT));


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;


::SendInput(1, &Input, sizeof(INPUT));




}




void VirtualInput::MouseLDragStart()


{


INPUT    Input = { 0 };


// 左键按下


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;


::SendInput(1, &Input, sizeof(INPUT));



}


void VirtualInput::MouseLDragMove(int x, int y)


{


MouseMove(x, y);


}


void VirtualInput::MouseLDragEnd()


{


INPUT    Input = { 0 };


// 左键抬起


::ZeroMemory(&Input, sizeof(INPUT));


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;


::SendInput(1, &Input, sizeof(INPUT));


}






void VirtualInput::MouseRDragStart()


{


INPUT    Input = { 0 };


// 左键按下


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;


::SendInput(1, &Input, sizeof(INPUT));





}


void VirtualInput::MouseRDragMove(int x, int y)


{


MouseMove(x, y);


}


void VirtualInput::MouseRDragEnd()


{


INPUT    Input = { 0 };


// 左键抬起


::ZeroMemory(&Input, sizeof(INPUT));


Input.type = INPUT_MOUSE;


Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;


::SendInput(1, &Input, sizeof(INPUT));


}






void VirtualInput::KeyBordDown(int vk)


{



//INPUT    Input = { 0 };


右键按下


//Input.type = INPUT_KEYBOARD;


//Input.mi.dwFlags = KEYEVENTF_KEYUP;


//::SendInput(1, &Input, sizeof(INPUT));


keybd_event(vk, 0, 0, 0);




}


void VirtualInput::KeyBordUp(int vk)


{


//INPUT    Input = { 0 };


右键按下


//Input.type = INPUT_KEYBOARD;


//Input.mi.dwFlags = KEYEVENTF_KEYUP;


//::SendInput(1, &Input, sizeof(INPUT));


keybd_event(vk, 0, KEYEVENTF_KEYUP, 0);


}




void VirtualInput::KeyBord(int vk)


{


keybd_event(vk, 0, 0, 0);


}




VirtualInput::VirtualInput()


{


}


VirtualInput::~VirtualInput()


{


到此这篇mouse按键(mousel是哪个按键)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!






























































































































































































版权声明


相关文章:

  • 游戏的分类(游戏的分类有哪些)2026-01-29 10:36:07
  • w25q512芯片手册(2525芯片中文)2026-01-29 10:36:07
  • 抖音怎么扫二维码登录另一个手机(抖音怎么扫二维码登录另一个手机上)2026-01-29 10:36:07
  • 招标拆包是什么意思(招标拆包是什么意思呀)2026-01-29 10:36:07
  • 如何安装32位win10(如何安装32位APP)2026-01-29 10:36:07
  • 拆包价是什么意思(拆包款是什么意思)2026-01-29 10:36:07
  • 圈一圈写一写图解一年级圆圈(小学一年级圈一圈填一填怎么做)2026-01-29 10:36:07
  • 医院启动绿色代码(医院绿色紧急代码)2026-01-29 10:36:07
  • 二级域名解析网址选那个(二级域名解析网站)2026-01-29 10:36:07
  • pointnet论文原文(onenet论文)2026-01-29 10:36:07
  • 全屏图片