用Python怎样制作一个可以远程控制电脑的程序
Admin 2022-06-23 群英技术资�
很多时候,我们都有远程控制电脑的需求。比如正在下载某样东西,需要让电脑在下载完后关机。或者你需要监控一个程序的运行状况等�
今天我们就来用Python实现一个远程监控并控制电脑的小程序�
听起来远程控制电脑好像很高级的样子,但是实现起来其实非常简单。实现原理如下:
与其说是学习如何远程控制电脑,还不如说是学习如何读取邮件。当然,上面的的流程只实现了远程控制电脑,而没实现对电脑的监控。而监控的操作可以以截图的方式来进行�
我们可以预设一个指令,当读取到邮件内容为grab时,我们就发送电脑截图。如何将电脑截图发送给手机邮箱,这样就达到了监控的效果�
关于如何发送邮件可以参考博客:如何用Python发送邮件?。这里就不再详细说了。下面我们看看如何读取邮件�
读取邮件需要使用到imbox模块,安装语句如下:
pip install imbox
读取邮件的代码如下:
from imbox import Imbox def read_mail(username, password): with Imbox('imap.163.com', username, password, ssl=True) as box: all_msg = box.messages(unread=True) for uid, message in all_msg: # 如果是手机端发来的远程控制邮� if message.subject == 'Remote Control': # 标记为已� box.mark_seen(uid) return message.body['plain'][0]
首先我们用with语句,打开邮箱。然后通过下面语句获取所有的未读邮件�
all_msg = box.messages(unread=True)
获取未读邮件后,对邮件进行遍历。将主题为“Reomte Control”的邮件标记为已读,并返回文本内容�
这里需要注意,因为我们筛选出了主题为“Remote Control”的邮件,因此我们在用手机发邮件的时候需要将主题设置为“Remote Control”,这样可以避免其它邮件的干扰�
截图需要使用到PIL模块,安装如下:
pip install pillow
截图的代码很简单:
from PIL import ImageGrab def grab(sender, to): # 截取电脑全屏 surface = ImageGrab.grab() # 将截屏保存为surface.jpg surface.save('surface.jpg') # 将截屏发送给手机 send_mail(sender, to, ['surface.jpg'])
其中send_mail的代码如下:
import yagmail def send_mail(sender, to, contents): smtp = yagmail.SMTP(user=sender, host='smtp.163.com') smtp.send(to, subject='Remote Control', contents=contents)
关于发送邮件的介绍可以参考上面提到的博客�
关机的操作非常简单,我们可以用python来执行命令行语句即可。代码如下:
import os def shutdown(): # 关机 os.system('shutdown -s -t 0')
除了关机,我们还可以执行很多操作。对于一些复杂的操作,我们可以预编写一些bat文件,这里就不演示了�
上面我们编写了各个部分的代码,然后再来看看主体部分的代码�
def main(): # 电脑用来发送邮件已经电脑读取的邮箱 username = '[email protected]' password = '********' # 手机端的邮箱 receiver = '[email protected]' # 读取邮件的时间间� time_space = 5 # 注册账户 yagmail.register(username, password) # 循环读取 while True: # 读取未读邮件 msg = read_mail(username, password) if msg: # 根据不同的内容执行不同操� if msg == 'shutdown': shutdown() elif msg == 'grab': grab(username, receiver) time.sleep(time_space)
我们可以根据自己的需求编写一些其它功能。下面是完整的代码:
import os import time import yagmail from imbox import Imbox from PIL import ImageGrab def send_mail(sender, to, contents): smtp = yagmail.SMTP(user=sender, host='smtp.163.com') smtp.send(to, subject='Remote Control', contents=contents) def read_mail(username, password): with Imbox('imap.163.com', username, password, ssl=True) as box: all_msg = box.messages(unread=True) for uid, message in all_msg: # 如果是手机端发来的远程控制邮� if message.subject == 'Remote Control': # 标记为已� box.mark_seen(uid) return message.body['plain'][0] def shutdown(): os.system('shutdown -s -t 0') def grab(sender, to): surface = ImageGrab.grab() surface.save('surface.jpg') send_mail(sender, to, ['surface.jpg']) def main(): username = '[email protected]' password = '你的授权�' receiver = '[email protected]' time_space = 5 yagmail.register(username, password) while True: # 读取未读邮件 msg = read_mail(username, password) if msg: if msg == 'shutdown': shutdown() elif msg == 'grab': grab(username, receiver) time.sleep(time_space) if __name__ == '__main__': main()
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�
猜你喜欢
对于初学者来说,在使用pycharm上会有一些问题,对此小编给大家分享一些pycharm设置方法,对大家熟悉pycharm有一定的帮助。需要的朋友可以参考参考�
python的is和in有啥不同?很多新手学习python,对于is和in的区别不是很清楚,对此,下面小编就给大家简单的介绍一下python的is和in的区别以及用法,感兴趣的朋友就继续往下看吧�
程序设计的好与坏,早在我们青葱岁月时就接触过了,只是那是并不知道这竟如此重要。能够立即改善程序设计、写出“好”代码的知识有以下几�
我们在使用python做接口测试的时候,会需要python的单元测试框架,在python中单元测试框架很多unittest、pytest、nose等,这篇文章就给介绍一下python的单元测试框中pytest和unittest区别是什么,接下来我们一起看看吧�
今天给大家分享的是Python中SortedList类的内容,对大家学习或者巩固python类的基础知识有一定的帮助,有这方面学习需求的朋友可以了解看看,那么接下来就跟随小编来学习一下吧�
推荐内容
联系我们
24小时售后 � 24小时售后TEL�0668-2555666 售前咨询TEL�400-678-4567 投诉建议TEL�0668-2555999 投诉建议邮箱:t[email protected] 信息安全TEL�0668-2555118 域名空间客服 � 公司总机�0668-2555555 公司传真�0668-2555000Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所� 茂名市群英网络有限公�
增值电信经营许可证 : B1.B2-20140078