python练手_简单的微信远程控制电脑

2018-09-13  本文已影响0人  PengJenas

软件没有图形界面,打开之后只有一个命令提示符窗口。

界面.jpg 微信远程.png
使用方法:

<1> 手机微信扫码登陆
<2> 用手机发微信给自己,如“远程#截图”
<3> 程序会截屏,然后发回。

目前有的功能:

<1> “远程#帮助” --获取帮助信息
<2> “远程#截图” --截图发回
<3> “远程#关机” --电脑关机
<4> "远程#控制#explorer" --其中的“explorer”可以换成其他CMD命令

# -*- coding: utf-8 -*-

# 作者:Jenas

import os,time
import itchat    # pip install itchat
from PIL import ImageGrab    # pip install pillow

@itchat.msg_register(itchat.content.TEXT)            # 封装好的装饰器,当接收到的消息是'TEXT'类型
def receive_wechat(msg):
    '''接收微信指令,判断消息是否来自自己并且包含符号#,其中#前面的是指令暗号,#后面的是具体指令。'''
    if msg['FromUserName'] == myUserName and '#' in msg['Text']:
        password = msg['Text'].split('#',1)[0]          # 以#来分割消息字符串1次,取第一个元素,即:暗号。
        do_what = msg['Text'].split('#',1)[1]           # 取第二个元素,即:指令。只分割一次,因为可能包括二级指令,如:远程#控制#explorer
        wechat_do(password, do_what) 

def wechat_do(password,do_what):
    '''对暗号,然后执行指令'''
    if password == '远程':                 # 对暗号
        if '#' not in do_what:           # 如果一级指令中不包含符号#,即:没有二级指令
            print('接收到远程指令: '+do_what)
            if do_what == '帮助':         
                read_me()                # 发送帮助信息
            elif do_what == '截图':
                img_to_myself()          # 发送截图给自己
            elif do_what == '关机':
                shutdown_pc()            # 执行本机关机

        elif '控制#' in do_what:         # 如果一级指令中还有符号#,即:含有二级命令,格式如:远程#控制#explorer
            control_command = do_what.split('#')[1]     # 以#分割,取第二个元素,即:二级指令,如:explorer
            print('接收到二级指令: ' + control_command)
            control_pc(control_command)  # 控制计算机执行相关指令

def read_me():
    '''一级指令:帮助信息'''
    readme_msg = '帮助信息:\n'
    readme_msg += '远程#截图\n'
    readme_msg += '远程#关机\n'
    readme_msg += '远程#控制#explorer\n'
    #print(readme_msg)
    itchat.send(readme_msg, toUserName=myUserName)      # 发送帮助信息

def img_to_myself():
    '''一级指令:本机截图'''
    print('执行截图……')
    ImageGrab.grab().save(imgName)                      # 截图并保存,文件名在预设中设置
    itchat.send_image(imgName, toUserName=myUserName)   # 微信发送截图给自己
    date_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))  #获取当前时间,并转格式
    time_msg = '[%s]'%date_time                     # 编辑消息,这里是:时间外面加括号,可自定义。
    itchat.send(time_msg, toUserName=myUserName)        # 发送消息,截图时间

def shutdown_pc():
    '''一级指令:本机关机'''
    print('执行关机……')
    os.system('shutdown -s -t 60')                      # 执行计算机系统指令,这里是60秒后关机
    warning_msg = '60秒后关机,取消如下:\n远程#控制#shutdown -a'     # 发送警告消息,提醒取消指令
    itchat.send(warning_msg, toUserName=myUserName)

def control_pc(control_command):                          
    '''二级指令,计算机执行系统指令,如:explorer是资源管理器,shutdown是关机命令,具体百度cmd命令大全'''
    print('执行二级命令……')
    try:
        os.system(control_command)
    except:
        pass

if __name__ == "__main__":
    itchat.auto_login(hotReload=True)                            # 扫码登陆微信
    imgName = "my_screenshot.png"                                # 预设截图文件名
    myUserName = itchat.get_friends(update=True)[0]["UserName"]  # 获取微信中自己的UserName
    read_me()   # 发送帮助信息
    itchat.run()

上一篇下一篇

猜你喜欢

热点阅读