关于远程控制鼠标和键盘的那些事
关于远程控制鼠标和键盘的那些事
在我们使用远程电脑控制软件时候,见得最多的除了画面,就是鼠标和键盘的操作了,那些远程控制的软件是如何工作的呢?经过与秒点远程控制工程师的深入交流,小编今天给大家讲讲其中原理。
其实远程控制软件的工作原理就是:A端操作,然后通过网络传输到B端,B端收到消息后做出相应的动作;然后动作的结果再通过画面形式传输回A端显示出来。今天我们就来讲讲鼠标和键盘在windows下远程控制的实现。有多种方法可以实现鼠标和键盘模拟,我们就介绍几种比较典型的。
1、局部级模拟
局部级模拟就是鼠标键盘事件只能把消息发送到指定的窗口。那么它是如何工作的呢?最直接的方法就是:直接伪造一个键盘消息发给目标程序。Windows提供了几个这样的API函数可以实现直接向目标程序发送消息的功能,常用的有SendMessage和PostMessage,它们的区别就是PostMessage函数异步的消息丢给目标程序后就不管了,而SendMessage同步的消息发出去后,还要等待目标程序的返回结果,如果一直没有结果返回,就会阻塞在那里,导致线程阻塞。所以模拟鼠标键盘消息最好是用PostMessage函数是比较好的选择。
但是,PostMessage这个方法发送消息,要事先知道对方的窗口句柄。要知道对方的窗口句柄就要使用到另外一函数,那就是FindWindow来查找目标窗口。HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);这个方法FindWindow局限性比较大,就是要事先知道这个窗口的类名或者窗口名。在远程控制过程中我们要对不同的窗口做控制,而且还要知道这个窗口的信息才能有针对性的发消息才行。所以这不是一个很好的方案。这种方法以只适合做一些比较特别的动作。比如我们的窗口已经最小化到拖盘了,用户以为客户端还没启动,就会在桌面快捷方式中双击打开,但是我们程序又是不支持多开的,这种情况下,就用我们现在方法就可以解决这个问题。
HWND hwnd = FindWindow(null, "窗口标题名");
if (hwnd != NULL) {
PostMessage(hwnd, WM_SHOWWINDOW , 0, 0)
SetForegroundWindow(hwnd);
}
当对方窗口收到消息的时候就可以做显示到前台了。
2、全局级模拟
比如mouse_event, keybd_event, SendInput,但是微软建议用SendInput代替另外两个,这里我们就讲讲SendInput举个例子,我们平时用的比较多的Win + D,可以快速切换到桌面。那这个一套按键是如何模拟的呢?
INPUT inputs[4] = {};
ZeroMemory(inputs, sizeof(inputs));
inputs[0].type = INPUT_KEYBOARD;åå
inputs[0].ki.wVk = VK_LWIN;
inputs[1].type = INPUT_KEYBOARD;
inputs[1].ki.wVk = VK_D;
inputs[2].type = INPUT_KEYBOARD;
inputs[2].ki.wVk = VK_D;
inputs[2].ki.dwFlags = KEYEVENTF_KEYUP;
inputs[3].type = INPUT_KEYBOARD;
inputs[3].ki.wVk = VK_LWIN;
inputs[3].ki.dwFlags = KEYEVENTF_KEYUP;
UINT uSent = SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));
if (uSent != ARRAYSIZE(inputs)) {
OutputString(L"Failed:0x%x\n", HRESULT_FROM_WIN32(GetLastError()));
}
讲到这里,中级的模拟鼠标键盘的方法,这个就可以满足我们平时办公的日常操作了,但是这个方法还是不够完美。就是有些窗口是不走Windows消息机制的,那这条路就走不通了。比如Windows上玩手柄游戏,这个方法就行不通了。原因一,游戏讲究的是实时性,响应速度一定要快,因为Windows消息机制是走队列的,消息一但成千上万的触发就会有一定的延迟;原因二,有些游戏具有防作弊功能,就是除了本机的鼠标键盘手柄设备,其他消息一概不处理,所以靠模拟Windows消息就不行了;所以这方面的游戏是不走Windows的消息机制的,你会发现在使用秒点远程控制, 在进行远程玩游戏, 给电脑当云游戏或云电脑的时候,有些远程软件的鼠标和键盘不能操作游戏来完成动作, 提示你使用了作弊器之类,这就是因为游戏之类, 或一些软件本身有反作弊机制.
那我们秒点远控如何解决这个问题呢,那么就是我们接下来要讲的BOSS级的驱动级模拟了。
驱动级模拟
什么是驱动级模拟呢?首先,要普及一下设备驱动程序的知识了。
驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备进行相互通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、“硬件和系统之间的桥梁”等。
在系统内核里面操作I/O端口,给连接键盘的集成电路发送指令,让它产生一个按下按键的信息,这样你的模拟输入对于所有程序来说就是从一个真实的设备发出的,而且可以绕过很多保护。从而达到模拟鼠标和键盘消息的输入事件。
我们在键盘上按下一个按键时,键盘会产生一个硬件中断,Windows会捕捉到这个中断,从而得知键盘上有了操作,然后由驱动来读取及处理键值。驱动程序的入口函数是
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
里面主要的工作:
1、注册驱动卸载。
2、注册通用IRP分发。
3、注册读取IRP分发。
4、注册电源IRP分发。
5、注册即插即用IRP分发。
6绑定设备。
键盘驱动对应着一条设备链,物理硬件(键盘)处于该设备链的最底端,在键盘上面叠着很多其他的虚拟设备,当键盘上有击键操作的时候,键值会存储在IRP中,所以我们可以创建一个虚拟的设备,绑定到这条设备链中来第一时间获取到按键信息,从而对其进行操作。
如果我们想对键盘的输入做一些改变,比如替换键值,就可以在第3步的时候读取键盘的输入值,并做相应的替换就行了。这个时候对于电脑操作系统看起来, 传送过去的键盘鼠标信号, 看起来都是物理的鼠标与键盘.
升仕 350D 详细配置来了,同级最强的存在!
视频加载中...
3.0代无钥匙控制系统
3.0代无钥匙控制系统采用先进的加密技术,支持CAN通信,与ECU、仪表等实时通信;搭载4G、GPS和蓝牙功能,通过升仕智能APP进行车辆管理,包括远程控制车辆、读取车辆数据和授权车辆他人使用等功能;具有远程锁死ECU功能,即便拆除更换也无法激活车辆,让销赃难度大增,追踪车辆行驶轨迹、实时定位也是对防盗手段之一;低电量自动休眠功能,在久停不用的状态下,只要还剩一点微弱存电就可唤醒全车电控;迷你感应钥匙,距车辆1.5米范围内放在背包或口袋里,无需拿出即可感应解锁,离开亦同,省去掏钥匙的繁琐;3.0代无钥匙控制系统具有IP67防水性能;内置高频天线结合芯片感应器,即便拔掉电池或完全没电,只要将钥匙贴近车辆无电感应区域即可与车辆通讯解锁。
节油运动双模式
通过右手柄上按键一键切换两种模式,仪表显示E为节油模式、S为运动模式,让长途省油、市区迅猛的不同需求都得以充分体现。省油模式下驾驶者需要紧急超车时只要将发动机转速拉升到7000转,系统会自动切换到运动模式。
升仕智能APP
升仕智能APP拥有车辆管理功能,包括远程控制车辆、读取车辆数据、授权车辆他人使用、记录行驶轨迹和远程升级等功能。后期可以通过远程升级如TCS等功能,并实现程序的不断迭代优化。
TFT全彩液晶屏幕仪表
全虚拟高清高亮度TFT全彩液晶IPS屏仪表,有四个主题界面,根据环境变化自动切换白天或黑夜模式,手机互联、胎压监测、导航投屏、镜像投屏、蓝牙听歌、接听电话、自动调节背光亮度等流行功能一应俱全;行驶中,实时监测车辆数据、车辆故障,是三代PKE系统重要组件。
博世BOSCH电喷系统
最新款博世电喷系统,集成大灯控制、风扇控制、运动节能双模式等功能,相当于对车辆的节油、运行品质进行了全面优化。
12AH大容量电池
容量大,低温性能好。
加宽加高的电动风挡
电动风挡,加宽加高,将迎面风导向头顶和四周,让踏板车也可以舒舒服服的长途摩旅。
胎压监测系统
采用德国进口芯片,实现高精准监测。车辆在行驶中,当轮胎气压出现异常时,迅速锁定前后轮状态,并在仪表界面闪烁发出警告提示。具有学习匹配功能、高压报警功能、低压报警功能、高温报警功能、快速漏气报警、传感器低电量报警、传感器信号丢失报警等。胎压监测系统将有效避免爆胎,增加驾驶安全性;避免低气压行驶损坏轮胎,延长轮胎寿命;降低油耗;保持车辆最佳的操控性能。
双路快充USB接口
车载USB充电器(快充版)为车主提供两个支持QC3.0快充协议的USB输出接口,一个Type A和一个Type C接头,快速充电时,单口输出功率可达18W,双口同时输出的总功率可达36W。外壳采用高温阻燃材料制成,内置高精度硬件限流芯片,能保证每个接口在安全电流范围内工作,有效预防输出过流,输入过压,输出短路等情况的发生,大大提升安全性。
高压缩比发动机
搭载350cc发动机,拥有11.8:1的高压缩比,较低油耗就可获得27kW,38N.m的动力输出,高压缩比发动机是目前世界上内燃机先进技术的发展趋势,省油、环保、高性能是高压缩比发动机的特色,要想成功运用高压缩比技术,必须要攻克发动机材料、成型工艺、结构设计等多方面不同于普通发动机的技术难关。
纯铝气缸
从铸造到加工处理完全自制的纯铝气缸,让没有缸套的气缸内壁变得很薄,把节省的空间用于加大水道,从而使缸内热量快速被带走。散热好是提高发动机性能、延长发动机寿命的重要保证。
全车LED灯光加超亮大灯
采用进口欧司朗LED光源,灯光亮度高,中心亮度超过8万坎德拉,精心调配的LED透镜,灯光利用率更高且范围更宽,夜晚拐弯更有信心。采用大面积高效散热器,光衰极小,寿命更长,长途摩旅铺路无忧。
搭载双通道ABS
双通道ABS系统让驾驶者遇到任何突发情况都可以从容操控车辆,无论沙地、雨地、雪地ABS系统都将带来随心所欲的信心。
辐射式卡钳
西班牙西户刹车配上浮动碟刹盘,大幅提升前刹效率,前碟刹采用辐射式对向四活塞卡钳,紧急制动稳、刹车距离短。
刹车手柄带驻车功能
刹车手柄标配驻车功能,操作简单方便,让您斜坡临时停车更安全。
全新调校前后减震器
前减震器采用上下联板夹持结构,搭配 41mm直径的前叉管,高刚性让车辆操控变得稳、准、狠,街道骑行穿梭自如;后减震加大阻尼筒,让减震响应快,有效过滤路面细小颠簸,大起伏路面支撑性更强,提高骑乘舒适感,长途跋涉不疲劳。
大容量油箱
12L大容量油箱,满足了日常使用需要。
宽面水冷散热器
宽面水冷散热器是将散热管、散热片、水道、风扇等关键部件重新设计组合的一个新产品,专为350D发动机订制,这款高性能发动机能得以充分发挥,离不开散热器的成功辅助,任何情况,用户都无须担心水温爆表和低温启动困难。
可收纳全盔的后置物箱
后置物箱可收纳一顶全盔。
参数表
改装件
已预留射灯接头、电加热手把接头,后期可选装竞技风挡、防风护手罩、电加热手把、尾箱等,满足一年四季的不同需求。
四种配色
350D提供亮银、磨砂黑、亮灰和特黑四种可选配色。
相关问答
远程启动功能怎么用?
[最佳回答]远程启动功能:通过汽车智能钥匙就可以启动汽车。远程启动的原理,就是通过智能钥匙给汽车发出信号,远程启动发动机,现在配置比较高的汽车就会配置远...
美的家用中央空调TR系列可以远程控制吗?
美的家用中央空调TR系列在原有线控、遥控的基础上,实现了移动终端远程遥控,打破了空间的界限,用户可以实时监控家居环境,随时查询空调运行情况,并根据需要提...
远程控制别人电脑时对方输入法为大写怎么处理-ZOL问答
使用给自己的键盘,切换输入法就能还原。有用(0)回复djb06云远程控制软件,也可以控制别人电脑屏幕和视频、杀毒还不提示。有用(0)回复zirun100方法/步骤...
远程锁车是怎么实现的-汽车维修技术网
[回答]远程开锁的实现,依赖于智能开车系统。如具备开锁功能的远程锁车系统与车身系统连接,监控车里面理所当然设备,与此同时接受远程调节。只需电瓶还能正...
Windows7无法连接远程打印机显示错误0x0000000d怎么解决?
.启动方式如下:1.点击电脑左下角“开始”,找到“运行”,点击打开。在弹出的运行对话框输入“services.msc”,点击“确定”。2.进入“服务”界面,找到“p...
长安逸动车钥匙4个按键的功能
[最佳回答]长安逸动(查成交价|参配|优惠政策)车钥匙四个键的作用如下:1。按解锁键解锁汽车。2.按一次锁定键即可锁定。3.按住行李箱按钮两秒钟,遥控打开行李箱...
大华硬盘录像机远程怎么设置D-Link路由器-小红薯8314D073...
进入大华硬盘录像机的系统设置,设置录像机的ip地址,端口号最好设置为80,登陆权限。连接到路由器,在路由器里登陆花生壳,把路由器的dmz主机ip设定为...
dilink远程怎么设置?
首先,让我们来了解一下dilink远程设置的基本步骤。1.确保你的dilink设备已经正确连接到互联网。可以通过查看设备的网络指示灯或者登录设备管理界面来确认。...
我用的是ABBASC51018.5KW变频,远程控制,DI1-2接正反转,DI3-4接加减速,请问下需要设置那些参数谢?
1001EXT1COMMANDS设置成99=DI1F,2R–起/停/方向命令取决于DI1和DI2的组合。•正转起动=DI1得电且DI2失电。•反转起动=DI1...
请大家推荐一款远程控制软件-懂得
PcAnywhere下载PcAnyWhere是一套老牌远程控制软件,可运行在Windows95/98/NT/2000/ME下。用户可以通过主控或被控的方式,远程管理已连接上互联网或内...