疫情期间对于没有工作的人而言,太难了,闲着吧,写一个屏幕控制程序,据我知道,之前的远程控制都是界面传输的,像qq的远程控制等,都是截图然后传输到自己的屏幕,但是我的需求是我自己有两台电脑,我想通过一个键盘鼠标控制他们,但是又不想在我的电脑上出现另一个电脑的画面
*远程过程调用使用thrift实现输出传输
*
* 使用Robot实现鼠标键盘事件的模拟
*
* 通过鼠标移除屏幕实现切屏功能
*
* 需要注意的是, 1.0.0版本只能实现两台电脑向后控制,而且没有实现断链重试, 也不支持文件传输,也不支持终端控制
* 再后续的迭代中陆续实现,而且现在这个版本效率还相对较低
*
* 加油吧
*
*
* 原理:
* 服务端很简单,就是启动一个thrift服务,然后等待客户端发送指定过来,让后使用robot模拟事件,就这么简单
* 客户端相对麻烦些:
* 1.客户端首先需要判断当前操作的是自己还是服务端屏幕
* 判断依旧是当前鼠标的指针位置,如果鼠标指针位置移动到屏幕右边边界外,那么就进入到控制服务端屏幕
* 于此同时如果鼠标指针移动屏幕左边边界外,那么回到客户端屏幕
* 2. 客户端怎么实现捕获鼠标键盘事件
* 在控制自己的时候,程序界面放到右上角,界面最小化,这样该做什么做什么
* 在控制服务端屏幕的时候,这是最麻烦的
* 怎么控制捕获鼠标键盘事件,同时自己的电脑没有想要,而且还不影响自己屏幕的显示,总不能显示一个大的空白屏幕吧
* 其实就是显示一个大空白屏幕,只是将这个屏幕设置为透明的,其实半透明的,这样不会影响自己的显示,还能捕获到鼠标键盘事件
* 但是需要注意的是,完全透明是没有办法捕获到界面上的事件的,这样操作的还是自己的屏幕
* 3.怎么实现再控制服务端屏幕的时候自己的鼠标不动
* 这个其实是做不到的,我们也是通过自己鼠标的为而实现相对再远程控制鼠标移动的,如果自己的鼠标不让动,那就没有办法实现服务端鼠标移动
* 其实这个问题很简单,再控制服务端屏幕的时候,将自己的鼠标设置为透明的就可以了,这样就实现了像是完全在控制服务端屏幕包括鼠标都是由自己的屏幕移动过去
*
* 4.实现鼠标拖动
* 在robot中没有鼠标拖动事件,而在java鼠标监控事件中存在,所以要实现鼠标拖动事件,我们还要自己编写一定的实现逻辑
项目地址:https://gitee.com/mjlfto/computercontroll
项目演示
Java实现远程屏幕控制,无界面版