Windows下C/C++模拟鼠标点击,PC端没有鼠标设备也能够获取鼠标坐标、移动鼠标坐标、模拟鼠标点击事件,方法一 亲测有效

——————— 【 转载请保留 】 ———————
作者:西_瓜_瓜
博客: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
——————— 【 谢谢合作 】 ————————

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值