当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    python实现微信远程控制电脑

    栏目:win服务器问题汇总 时间:2019-11-18 20:32

    首先,我们要先看看微信远程控制电脑的原理是什么呢?

    我们可以利用Python的标准库控制本机电脑,然后要实现远程的话,我们可以把电子邮件作为远程控制的渠道,我们用Python自动登录邮箱检测邮件,当我们发送关机指令给这个邮箱的时候,若Python检测到相关的指令,那么Python直接发送本机的相关命令。

    下面来分析一下该项目:

    1.需求分析

    1.范围:用Python开发一个远程操控电脑的项目。

    2.总体要求:

    2.1 总体功能要求:能够通过该软件远程控制该软件所在的电脑的重启或关机操作。
    2.2 系统要求:开发语言使用Python,并且开发出来的程序能在Windows运行。

    2.设计

    首先,我们可以利用Python的标准库控制本机电脑,然后要实现远程的话,我们可以把电子邮件作为远程控制的渠道,我们用Python自动登录邮箱检测邮件,当我们发送关机指令给这个邮箱的时候,若Python检测到关机的指令,那么Python直接发送本机的关闭。

    3.编写

    本项目的流程图如下

     

    第一步,需要注册一个新浪邮箱。然后点击新浪邮箱点击右上角设置如图

    选择“客户端pop/imap/smtp”

     

    打开新浪邮箱的SMTP与POP3功能

    具体实现代码:
    配置文件config.ini

    [Slave]
    pophost = pop.sina.com
    smtphost = smtp.sina.com
    port = 25
    username = XXX@sina.com
    password = XXX
    
    [Boss]
    mail = XXX@qq.com
    timelimit = 2
    
    [Command]
    shutdown=shutdown -f -s -t 100 -c closing...
    dir=dir
    
    
    [Open]
    music = F:Masetti - Our Own Heaven.mp3
    video = F:Jai Waetford - Shy.mp4
    notepad = notepad
    
    

    excutor.py

    #coding:utf-8
    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")
    import os
    import win32api
    from mccLog import mccLog
    
    class executor(object):
     def __init__(self,commandDict,openDict):
      '''
      创建方法
      :param commandDict:
      :param openDict:
      '''
      self.mccLog = mccLog()
      self.commandDict = commandDict
      self.openDict = openDict
     def execute(self,exe,mailHelper):
      self.mailHelper = mailHelper
      subject = exe['subject']
      # self.mccLog.mccWriteLog(u'开始处理命令')
      print u'start to process'
      if subject !='pass':
       self.mailHelper.sendMail('pass','Slave')
       if subject in self.commandDict:
        # self.mccLog.mccWriteLog(u'执行命令!')
        print u'start command'
        try:
         command = self.commandDict[subject]
         os.system(command)
         self.mailHelper.sendMail('Success','Boss')
         # self.mccLog.mccWriteLog(u'执行命令成功!')
         print u'command success'
        except Exception,e:
         # self.mccLog.mccError(u'执行命令失败'+ str(e))
         print 'command error'
         self.mailHelper.sendMail('error','boss',e)
       elif subject in self.openDict:
        # self.mccLog.mccWriteLog(u'此时打开文件')
        print u'open the file now'
        try:
         openFile = self.openDict[subject]
         win32api.ShellExecute(0,'open',openFile,'','',1)
         self.mailHelper.sendMail('Success','Boss')
         # self.mccLog.mccWriteLog(u'打开文件成功!')
         print u'open file success'
        except Exception,e:
         # self.mccLog.mccError(u'打开文件失败!' + str(e))
         print u'open file error'
         self.mailHelper.sendMail('error','Boss',e)
       elif subject[:7].lower() =='sandbox':
        self.sandBox(subject[8:])
       else:
        self.mailHelper.sendMail('error','Boss','no such command!')
    
     def sandBox(self,code):
      name = code.split('$n$')[0]
      code = code.split('$n$')[1]
      codestr = '\n'.join(code.split('$c$'))
      codestr = codestr.replace('$',' ')
      with open(name,'a') as f:
       f.write(codestr)
      os.system('python' + name)