——————— 【 转载请保留 】 ———————
作者:西_瓜_瓜
博客:https://blog.csdn.net/xi_gua_gua/article/details/105773298
——————— 【 谢谢合作 】 ————————
在使用PC端开发应用时,没有鼠标设备的情况下实现由一个前台程序触发来实现底层程序的触发,如模拟鼠标的点击事件,键盘等
移动鼠标坐标
SetCursorPos(100,200)
设置鼠标当前位置,坐标以屏幕的左上角为原点,单位是像素点。在Windows SDK中的函数原型:
头文件 #include <Windows.h>
BOOL SetCursorPos(
int X, // horizontal position 参数1:水平位置坐标
int Y // vertical position 参数2:垂直位置坐标
);
获取鼠标坐标
GetCursorPos() 获取鼠标当前位置。
POINT pt;
GetCursorPos(&pt);
printf("---mouse--- x = %d, y = %d---\n", pt.x, pt.y);
模拟鼠标点击
mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo )
参数介绍:
dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。
MOOSEEVENTFMOVE: 移动。
MOOSEEVENTF_LEFTDOWN: 按下鼠标左键。
MOOSEEVENTF_LEFTUP: 松开鼠标左键。
MOOSEEVENTF_RIGHTDOWN: 按下鼠标右键。
MOOSEEVENTF_RIGHTUP: 松开鼠标右键。
MOOSEEVENTF_MIDDLEDOWN: 按下鼠标中键。
MOOSEEVENTF_MIDDLEUP: 松开鼠标中键。
MOOSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。
dx:指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOOSEEVENTF_ABSOLOTE的设置。给出的绝对数据作为鼠标的实际X坐标;给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量,表明鼠标已经移动。
dy:指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOOSEEVENTF_ABSOLVTE的设置。给出的绝对数据作为鼠标的实际y坐标,给出的相对数据作为移动的mickeys数。
dwData:如果dwFlags为MOOSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。如果dwFlagsS不是MOOSEEVENTF_WHEEL,则dWData应为零。
dwExtralnfo:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessgeExtrajnfo来获得此附加信息。
应用实例:
POINT pt;
SetCursorPos(100, 200);
GetCursorPos(&pt);
printf("---mouse--- x = %d, y = %d---\n", pt.x, pt.y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //按下左键
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //松开左键
如果有小伙伴看不懂太多英语,还想知道GetCursorPos函数的用法,那么往msdn官网看吧
msdn网址:https://docs.microsoft.com/zh-cn/windows/desktop/api/winuser/nf-winuser-getcursorpos
——————— 【 转载请保留 】 ———————
作者:西_瓜_瓜
博客:https://blog.csdn.net/xi_gua_gua/article/details/105773298
——————— 【 谢谢合作 】 ————————