首页 / 知识
如何让Python实现远程控制电脑
2023-11-12 13:38:00
一、前言
很多时候,我们都有远程控制电脑的需求。比如正在下载某样东西,需要让电脑在下载完后关机。或者你需要监控一个程序的运行状况等。
今天我们就来用Python实现一个远程监控并控制电脑的小程序。
二、实现原理
听起来远程控制电脑好像很高级的样子,但是实现起来其实非常简单。实现原理如下:
1.运行程序,让程序不停地读取邮件。
2.用手机给电脑发送邮件。
3.判断是否读取到指定主题的邮件,如果有,则获取邮件内容。
4.根据邮件内容,执行预设的函数。
与其说是学习如何远程控制电脑,还不如说是学习如何读取邮件。当然,上面的的流程只实现了远程控制电脑,而没实现对电脑的监控。而监控的操作可以以截图的方式来进行。
我们可以预设一个指令,当读取到邮件内容为grab时,我们就发送电脑截图。如何将电脑截图发送给手机邮箱,这样就达到了监控的效果。
关于如何发送邮件可以参考博客:如何用Python发送邮件?。这里就不再详细说了。下面我们看看如何读取邮件。
三、读取邮件
读取邮件需要使用到imbox模块,安装语句如下:
pipinstallimbox
读取邮件的代码如下:
fromimboximportImbox
defread_mail(username,password):
withImbox('imap.163.com',username,password,ssl=True)asbox:
all_msg=box.messages(unread=True)
foruid,messageinall_msg:
#如果是手机端发来的远程控制邮件
ifmessage.subject=='RemoteControl':
#标记为已读
box.mark_seen(uid)
returnmessage.body['plain'][0]
首先我们用with语句,打开邮箱。然后通过下面语句获取所有的未读邮件:
all_msg=box.messages(unread=True)
获取未读邮件后,对邮件进行遍历。将主题为“ReomteControl”的邮件标记为已读,并返回文本内容。
这里需要注意,因为我们筛选出了主题为“RemoteControl”的邮件,因此我们在用手机发邮件的时候需要将主题设置为“RemoteControl”,这样可以避免其它邮件的干扰。
四、截图
截图需要使用到PIL模块,安装如下:
pipinstallpillow
截图的代码很简单:
fromPILimportImageGrab
defgrab(sender,to):
#截取电脑全屏
surface=ImageGrab.grab()
#将截屏保存为surface.webp
surface.save('surface.webp')
#将截屏发送给手机
send_mail(sender,to,['surface.webp'])
其中send_mail的代码如下:
importyagmail
defsend_mail(sender,to,contents):
smtp=yagmail.SMTP(user=sender,host='smtp.163.com')
smtp.send(to,subject='RemoteControl',contents=contents)
关于发送邮件的介绍可以参考上面提到的博客。
五、关机
关机的操作非常简单,我们可以用python来执行命令行语句即可。代码如下:
importos
defshutdown():
#关机
os.system('shutdown-s-t0')
除了关机,我们还可以执行很多操作。对于一些复杂的操作,我们可以预编写一些bat文件,这里就不演示了。
六、完整代码
上面我们编写了各个部分的代码,然后再来看看主体部分的代码:
defmain():
#电脑用来发送邮件已经电脑读取的邮箱
username='sockwz@163.com'
password='********'
#手机端的邮箱
receiver='2930777518@qq.com'
#读取邮件的时间间隔
time_space=5
#注册账户
yagmail.register(username,password)
#循环读取
whileTrue:
#读取未读邮件
msg=read_mail(username,password)
ifmsg:
#根据不同的内容执行不同操作
ifmsg=='shutdown':
shutdown()
elifmsg=='grab':
grab(username,receiver)
time.sleep(time_space)
我们可以根据自己的需求编写一些其它功能。下面是完整的代码:
importos
importtime
importyagmail
fromimboximportImbox
fromPILimportImageGrab
defsend_mail(sender,to,contents):
smtp=yagmail.SMTP(user=sender,host='smtp.163.com')
smtp.send(to,subject='RemoteControl',contents=contents)
defread_mail(username,password):
withImbox('imap.163.com',username,password,ssl=True)asbox:
all_msg=box.messages(unread=True)
foruid,messageinall_msg:
#如果是手机端发来的远程控制邮件
ifmessage.subject=='RemoteControl':
#标记为已读
box.mark_seen(uid)
returnmessage.body['plain'][0]
defshutdown():
os.system('shutdown-s-t0')
defgrab(sender,to):
surface=ImageGrab.grab()
surface.save('surface.webp')
send_mail(sender,to,['surface.webp'])
defmain():
username='sockwz@163.com'
password='你的授权码'
receiver='2930777518@qq.com'
time_space=5
yagmail.register(username,password)
whileTrue:
#读取未读邮件
msg=read_mail(username,password)
ifmsg:
ifmsg=='shutdown':
shutdown()
elifmsg=='grab':
grab(username,receiver)
time.sleep(time_space)
if__name__=='__main__':
main()
以上内容为大家介绍了如何让Python实现远程控制电脑,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规如何提速优化python代码?
如何提速优化python代码?,代码,时间,数据,新增,写法,包装,情况,下来,面临,工作,Python是一种脚本语言,相比C/C++这样的编译语言,在效率和性能方Python数据结构的时间复杂性
Python数据结构的时间复杂性,时间,项目,情况,平均,复杂度,培训,术语,数据,状态,操作,1.让我们了解大O符号的含义是什么?在算法中执行许多操作python经典最短代码实现排序的功能
python经典最短代码实现排序的功能,代码,位置,数据,分析,时间,序列,元素,培训,下来,算法,冒泡排序:算法思想:1.比较相邻的元素,如果第一个比第二Python集合和时间复杂度
Python集合和时间复杂度,项目,时间,数据,数字,照片,情况,通用,培训,平均,表示,在本文的这一部分中,我将记录CPython中的常见集合,然后概述它们如何让Python代码更易维护
如何让Python代码更易维护,代码,项目,标准,工具,质量,地方,一致,更正,培训,控制权,检查你的代码的质量,通过这些外部库使其更易维护。可读性很Python测试远程端口连接时间
Python测试远程端口连接时间,时间,网络,服务,责任,培训,文件,端口,服务器,脚本,时间差,最近自己服务器访问别人的服务器,有时候会报超时错误,有了解Python语言中的时间处理
了解Python语言中的时间处理,时间,信息,代码,培训,单位,文本,语言,结果,星期,格式,Python语言对于时间的处理继承了C语言的传统,时间值是以秒python阅读代码有助于养成优秀的代
python阅读代码有助于养成优秀的代码风格,代码,培训,统一,项目,名字,风格,注释,可读性,顾名思义,成份,“优秀的代码不需要文档”,这句话虽然说Python代码统计工具
Python代码统计工具,代码,工具,注释,培训,分析,字符串,引号,脚本,语句,语言,此前实现的C代码统计工具仅能分析和统计C语言代码文件,但其设计思python阅读代码提高编码能力
python阅读代码提高编码能力,代码,概念,培训,资料,能力,时候,实例,进程,技巧,方法,在python中阅读源代码也是提高编码能力的一种途径,就像临摹Python 代码排版问题
Python 代码排版问题,异常,代码,标准,培训,空格,函数,括号,之间,语句,模块,一,代码排版:1,缩进。4个空格的缩进(编辑器都可以完成此功能),不使用T