如何让Python实现远程控制电脑

发布时间:2022-03-11 09:58:29 人气:412 作者:多测师

  一、前言

  很多时候,我们都有远程控制电脑的需求。比如正在下载某样东西,需要让电脑在下载完后关机。或者你需要监控一个程序的运行状况等。

  今天我们就来用Python实现一个远程监控并控制电脑的小程序。

  二、实现原理

  听起来远程控制电脑好像很高级的样子,但是实现起来其实非常简单。实现原理如下:

  1.运行程序,让程序不停地读取邮件。

  2.用手机给电脑发送邮件。

  3.判断是否读取到指定主题的邮件,如果有,则获取邮件内容。

  4.根据邮件内容,执行预设的函数。

  与其说是学习如何远程控制电脑,还不如说是学习如何读取邮件。当然,上面的的流程只实现了远程控制电脑,而没实现对电脑的监控。而监控的操作可以以截图的方式来进行。

  我们可以预设一个指令,当读取到邮件内容为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”,这样可以避免其它邮件的干扰。

如何让Python实现远程控制电脑

  四、截图

  截图需要使用到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 = 'sockwz@163.com'

  password = '********'

  # 手机端的邮箱

  receiver = '2930777518@qq.com'

  # 读取邮件的时间间隔

  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 = 'sockwz@163.com'

  password = '你的授权码'

  receiver = '2930777518@qq.com'

  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()

  以上内容为大家介绍了如何让Python实现远程控制电脑,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/

返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线