码迷,mamicode.com
首页 > 其他好文 > 详细

dota监测

时间:2014-10-06 01:52:09      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   ar   for   文件   sp   

漫漫长假一个人无聊得很,整日DOTA,打的腰酸背痛腿抽筋的.就想着写一个脚本记录自己每天打游戏的时间,于是就产生了下面的这个东西...

运行环境:win7 32位.

python版本:3.4.1

由于用到了一些win32api,这些并非python标准库自带的,所以你需要先去下载pywin32模块.去http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/找到对应你的系统及python版本的包,一路next安装即可.

#coding=gbk
import win32com.client
import time
import os


def IsExsit(processName):
    WMI = win32com.client.GetObject(winmgmts:)
    processCodeCov = WMI.ExecQuery(
        select * from Win32_Process where Name="%s" % processName)
    if len(processCodeCov) > 0:
        return 1
    else:
        return 0

oldStatus = 0
newStatus = 0   #0代表进程不存在.1代表存在
totalTime = 0

def ShutDown(fp):
    cmd = "cmd.exe /k shutdown -s -t 0"
    structTime = time.localtime(time.time())
    currentTime = time.strftime(%Y-%m-%d %H:%M:%S, structTime)
    info = "关机:" + currentTime + "\n"
    fp.write(info)
    os.system(cmd)

def Handle(processName,fp):
    global oldStatus, newStatus,totalTime
    newStatus = IsExsit(processName)
    structTime = time.localtime(time.time())
    currentTime = time.strftime(%Y-%m-%d %H:%M:%S, structTime)
    print(oldStatus, newStatus,currentTime)
    
    #更新进程运行总时间.
    if newStatus == 1:
        totalTime += 60              
        if totalTime >= 60*60*3:      #超过3小时则关机
            ShutDown(fp)

    #在进程状态改变时记录到文件中
    if (oldStatus != newStatus): 
        oldStatus = newStatus  
        structTime = time.localtime(time.time())
        strTime = time.strftime(%Y-%m-%d %H:%M:%S, structTime)
        if newStatus:
            strTmp = processName + "开启"
        else:
            strTmp = processName + "关闭"
        info = strTime + "********" + strTmp + "\n"
        fp.write(info)
        #fp.close()
    else:                              #
        pass


if __name__ == __main__:
    fp = open("records.txt", "a+")
    structTime = time.localtime(time.time())
    currentTime = time.strftime(%Y-%m-%d %H:%M:%S, structTime)
    info = "开始监控:" + currentTime + "\n"
    fp.write(info)
    while True:
        Handle(war3.exe,fp)
        #5分钟检测一次
        time.sleep(60)

程序很简单,隔一段时间监测一下war3.exe进程在不在,在进程状态有改变时记录到一个文本中,举个例子,你8:00的时候把脚本运行起来了,然后9:00你开始玩dota一直到9:30.那么程序在9:00附近监测的时候发现war3.exe从无到有了,那么就会记录下来写到recorder.txt中,9:30附近监测到war3.exe从有到无,也会写到文本中.在脚本运行的过程中,发现war3.exe在运行的话就会开始总时间的统计,当超过3小时,就会执行一个关机命令(好几把dota打的正爽的时候关机了。。。。。。)

目前脚本做的还不是很完善,比如没有去捕获在cmd命令行中键入ctrl+z产生的信号,也没有把监测的进程名称,间隔时间什么的做到配置文件里去,其实做起来也不复杂,就是人比较懒,不想去弄了....

后续的话考虑用tkinter写个界面出来,然后再看看加一个短信通知的功能神马的,暂时把目标写在这里,希望不要烂尾吧.

dota监测

标签:style   blog   http   color   os   ar   for   文件   sp   

原文地址:http://www.cnblogs.com/sdu20112013/p/4004886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!