python实现微信远程控制电脑

论坛 期权论坛 脚本     
niminba   2021-5-23 03:07   1398   0

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

我们可以利用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)

configReader.py

#-*-coding:utf-8-*-
import ConfigParser
import os,sys

class configReader(object):
 def __init__(self,configPath):
  configFile = os.path.join(sys.path[0],configPath)
  self.cReader = ConfigParser.ConfigParser()
  self.cReader.read(configFile)

 def readConfig(self,section,item):
  return self.cReader.get(section,item)

 def getDict(self,section):
  commandDict = {}#字典
  items = self.cReader.items(section)
  for key,value in items:
   commandDict[key] = value
  return commandDict

日志文件mccLog.py

#-*-coding:utf-8-*-
import logging
from datetime import datetime

class mccLog(object):
 def __init__(self):
  logging.basicConfig(
   level=logging.DEBUG,
   format='4({:N74(Q!!4(4(1Ф4(4(	!54(	(!	(4(!4(4(4)}}}|}}}|4(4(4("n4(4(е聍顽兙4(L4(rjgOGj~/7knBjZ?:>GrGj7惒"wbj~~n"Oj"j{Z>+jW'r/Fc"Bg&7C3Z"G4(4(brZj3ro疒j惚r'&*rokkR2
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP