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的啟發與思路提供。