远程控制关键技术:屏幕控制之一(模拟鼠标)

远程控制关键技术:屏幕控制之一(模拟鼠标)

远程控制关键技术:屏幕控制之一(模拟鼠标)

在远程控制软件的编写中,屏幕控制最重要的部分就是模拟鼠标和模拟键盘操作了,看完这两篇文章,估计大家都很容易明白编写屏幕控制的原理,它的一般流程如下:

一、捕获被控机屏幕 => 发送到控制机。

二、捕获控制机鼠标坐标和操作(映射OnMouseUp,OnMouseDown等) => 发送到被控制机,并模拟鼠标执行。

三、捕获控制机键盘操作(pretranslatemessage中拦截) => 发送到被控制机,模拟键盘执行。

在这篇文章中我们主要来说下模拟鼠标操作所用到的函数,以及范例:

先看一下效果图:

远程控制模拟鼠标操作

远程控制模拟鼠标操作

具体可以操作演示一下,具体代码见下面。

关键函数:mouse_event();

函数原型:mouse_event(DWORD dwFlag,DWORD dx, DWORD dy, DWORD dwData, ULONG_PTR dwExtraInfo );

简单用法:

dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下列值的任何合理组合:
MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。如果不设置此位,参数含有相对数据:相对于上次位置的改动位置。此标志可被设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参见下面备注部分。
  • MOUSEEVENTF_MOVE:表明发生移动。
  • MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。
  • MOUSEEVENTF_LEFTUP:表明松开鼠标左键。
  • MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。
  • MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。
  • MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。
  • MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。
  • MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。
更加详细用法: mouse_event百度百科
示例代码:
01void CmouseDlg::OnBnClickedMove()
02{
03SetCursorPos(50,130);inti,x = 5,y = 5;
04 
05for (i = 0;i < 60; i++)
06{
07mouse_event(MOUSEEVENTF_MOVE,x,y,0,0);
08 
09//每隔一秒钟移动一次
10Sleep(10);
11}
12}
13void CmouseDlg::OnBnClickedLeft()
14{
15//把鼠标移动到坐标为50,130的位置
16SetCursorPos(50,130);
17//按下鼠标,并释放
18mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
19mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
20}
21void CmouseDlg::OnBnClickedDoubleleft()
22{
23SetCursorPos(50,130);
24//鼠标双击由两次按下与释放来模拟
25mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
26mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
27 
28mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
29mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
30}
31void CmouseDlg::OnBnClickedRight()
32{
33SetCursorPos(300,300);
34mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
35mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
36}





当你有多台电脑的键盘鼠标放在狭窄的电脑桌上, 当你在每台电脑的键盘鼠标之间来回切换而焦头烂额时, 当你为了发送一段文本而不得不使用飞鸽或QQ甚至通过共享文件来时传递时, 你或许需要它:"远程虚拟控制" 这个软件实现了只使用一套键盘鼠标控制最多八台主机的功能, 并能在这些主机之间方便的传送文本内容, 实现在一台电脑上Ctrl + C 在另外一台电脑上Ctrl + V, 完成远程复制功能。 主机之间的切换无需进行任何附加操作, 你只需要将你的鼠标从这个显示移动到另一台显示器, 就如同将输入焦点从一个窗口移动到另一个窗口一样, 当完成鼠标切换后, 键盘也同时将输入焦点切换到相应的主机, 此后的大部分键盘输入操作均只对拥有鼠标的主机有效, 除了(Ctrl + ATL + DEL、WIN + L)这些组合键无法传送, 当按下这些组合键后, 主控机即刻获取输入焦点。 此软件只能在登陆后的默认桌面才可使用, 不能在登陆桌面, 屏保桌面下使用(等待解决这个问题), 在使用时如果系统安装有防火墙软件, 请将本程序加入防火墙的白名单或是相应配制文件中, 让防火墙放过检测。否则可能 给你的使用带来不便。 软件分为主控端和被控端, 可能存在多台被控端, 但是只能有一台主控端, 由主控端向其它被控端发送键盘鼠标指令, 以控制被控端的行为。 将程序分别解压到你每台的电脑上,依据配制说明将一台电脑配制成主控机, 将其它的电脑制成被控机。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值