使用微信控制你的電腦


title: 使用微信控制你的電腦
author:青南
date: 2014-12-23 22:44:20
categories: [Python]
tags: [Python,email]

A totally amazing!!!

源代碼請戳->https://github.com/kingname/MCC

實際上使用任何可以發送郵件的東西都可以。但是因為微信比較普及,所以就用微信的發送郵件功能做一個測試吧~~

文件結構

程序由兩部分構成:

  • _config.ini為配置文件,用於配置主人郵箱,奴隸郵箱和手工添加需要執行的命令
  • auto.py為程序的主體文件,相關的實現代碼均在里面

軟件原理

本程序需要使用兩個郵箱,我給他們取名字為【主人郵箱】和【奴隸郵箱】。建議奴隸郵箱使用小號。主人郵箱使用大號,我是使用的我的QQ郵箱作為主人郵箱,臨時申請的一個新浪郵箱作為奴隸郵箱。目前奴隸郵箱使用新浪郵箱測試通過,其他郵箱未做測試。各位有興趣的朋友可以測試一下並反饋給我,非常感謝~

本程序使用Python的poplib提供的函數,周期性讀取奴隸郵箱最新的一封郵件,如果這封郵件是主人郵箱發送的,並且標題在_config.ini文件中有定義,則執行本標題定義的操作。

例如,_config.ini文件中有如下定義:

music=D:\backup\Music\Intro.mp3

主人郵箱發送一份郵件,標題為music,電腦就會調用默認播放器,播放D盤中的這個名叫Intro.mp3的音樂。如果這個Intro.mp3本身只有1秒鍾,且沒有內容,而音樂播放器設置為隨機播放,就間接地實現了打開播放器隨機播放音樂的目的。

目前程序可以實現兩類功能:
運行命令與打開文件。

運行命令

其中運行命令的原理是:

os.system(command)

理論上任何在CMD命令提示符下可以執行的命令,在這里都可以執行。_config.ini中默認提供了兩個樣例,一個關閉計算機:

shutdown=shutdown -f -s -t 10 -c closing...

另一個是列出當前目錄:

dir=dir

等號左側為此命令的名字,也就是在郵件中可以發送的標題內容,等號右側為命令本身。注意等號左右均不能有空格。

打開文件

打開文件的原理是:

win32api.ShellExecute(0, 'open', open_file, '','',1)

其中,open_file為文件在電腦中的位置。函數調用Windows的API來運行程序,效果和用鼠標雙擊相同。

運行流程

程序運行以后,先加載_config.ini,配置主人郵箱和奴隸郵箱,並確定掃描頻率(time_limit)為多少秒檢查一次郵箱。同時使用字典將命令的名稱和命令本身添加到內存中。接下來的操作如下:

使用主人郵箱發送相應的命令名稱以后,就能觸發電腦的相關操作。

程序配置

打開_config.ini文件:

  • host填寫奴隸郵箱的pop3服務器,例如新浪的pop3服務器為

      pop.sina.com
    
  • username為奴隸郵箱的郵箱號

  • password為奴隸郵箱的密碼

  • boss_email為主人郵箱號

  • time_limit控制程序檢查郵箱的評論,默認為300秒,也就是5分鍾

  • <command>與</command>(抱歉這里不得不用全角的尖括號,因為博客園markdown轉義老是出問題)之間為命令區,此處可以使用任何能在CMD命令提示符中執行的命令格式為:

      名字=命令
    

注意=左右不能出現空格

  • <open_file></open_file>(抱歉這里不得不用全角的尖括號,因為博客園的markdown轉義老是出問題)之間為可以打開的文件。任何在電腦上可以使用鼠標雙擊打開的程序、文件均可把其地址寫在此處。格式為:

     名字=地址
    

注意=左右不能出現空格

編譯程序

使用py2exe編譯。進入代碼目測,執行以下代碼:

python mysetup.py py2exe

Todo

接下來的版本升級中

  • 會添加更多的操作進去
  • 開發圖像界面,使配置更方便
  • 動態調整檢查頻率
  • 通過郵件的內容返回命令的執行狀態
  • 通過郵件內容返回文件列表
  • 解決打開的文件功能在文件名和路徑不能有漢字的bug

致謝

感謝知乎用戶 @印如意fitz的啟發與思路提供。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM