漫漫长假一个人无聊得很,整日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监测的更多相关文章

  1. SignalR系列续集[系列8:SignalR的性能监测与服务器的负载测试]

    目录 SignalR系列目录 前言 也是好久没写博客了,近期确实很忙,嗯..几个项目..头要炸..今天忙里偷闲.继续我们的小系列.. 先谢谢大家的支持.. 我们来聊聊SignalR的性能监测与服务器的 ...

  2. 基于SignalR实现B/S系统对windows服务运行状态的监测

    通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windows服务肯定是必不可少的,我们还需要利用B/S与windows服务进 ...

  3. Consul-template的简单应用:配置中心,服务发现与健康监测

    简介 Consul-template是Consul的一个方扩展工具,通过监听Consul中的数据可以动态修改一些配置文件,大家比较热衷于应用在Nginx,HAProxy上动态配置健康状态下的客户端反向 ...

  4. fir.im Weekly - APP 性能监测优化 二三事

    每一个成功的 App,都拥有强大的性能体验.本期 fir.im Weekly 整理了微信读书.美团外卖. 天猫.美团点评技术团队的关于性能监测优化方面策略和工具的分享,一起来看看. 微信读书 iOS ...

  5. 服务发现与健康监测框架Consul-DNS转发的应用

    关于Consul Consul是一个提供服务注册与发现,健康监测,Key/Value存储以及多数据中心存储的分布式框架.官网地址是https://www.consul.io/,公司初步应用后我们老大觉 ...

  6. Linux 性能监测:工具

    一个完整运行的 Linux 系统包括很多子系统(介绍,CPU,Memory,IO,Network,-),监测和评估这些子系统是性能监测的一部分.我们往往需要宏观的看整个系统状态,也需要微观的看每个子系 ...

  7. apachetop 实时监测web服务器运行状况

    apachetop 实时监测web服务器运行状况   我们经常会需要知道服务器的实时监测服务器的运行状况,比如哪些 URL 的访问量最大,服务器每秒的请求数,哪个搜索引擎正在抓取我们网站?面对这些问题 ...

  8. 使用 Arduino 和 LM35 温度传感器监测温度

    上一篇玩儿了一下Arduino入门,这次再进一步,用一下LM35温度传感器来监测当前温度.LM35温度传感器已经在Arduino入门套件里包含了,就是那个有三个脚的小黑块儿. 我们先把这些东西连起来. ...

  9. 谈谈iOS app的线上性能监测

    在移动端开发者中最重要的KPI应该是崩溃率.当崩溃率稳定下来后,工作的重心就应该转移到性能优化上.那么问题来了,如果你的项目也没有接入任何性能监测SDK,没有量化的指标来衡量,那你说你优化了性能领导信 ...

随机推荐

  1. 修改2张表不同SESSION相互持有记录引发的死锁

    死锁产生的原因:如果有两个会话,每个会话都持有另一个会话想要的资源,此时就会发生死锁. 2张表不同SESSION持有不同记录 SQL> create table t1(id int); Tabl ...

  2. vijosP1194 Domino

    vijosP1194 Domino 链接:https://vijos.org/p/1194 [思路] 矩阵相乘. 参考Matrix67的文章: [代码] #include<cstdio> ...

  3. bzoj2124 等差子序列(hash+线段树)

    2124: 等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 719  Solved: 261[Submit][Status][Discuss] ...

  4. [Java] JavaMail 简单案例

    网易提供了免费的 SMTP / POP3服务,可用于编程测试,详情见 什么是POP3.SMTP和IMAP? 只需要拥有一个网易邮箱账号,并开启该账号的 SMTP / POP3 功能,便可以通过程序发送 ...

  5. Period II - FZU 1901(KMP->next)

    题目大意:给你一个字符串 S ,N = |S|,如果存在一个 P (1<=P<=N),并且满足 s[i] = s[P+i] (i = {0...N-P-1} ),求出来所有的 P 然后输出 ...

  6. System.Threading.Timer 使用

    //定义计时器执行完成后的回调函数 TimerCallback timecallback = new TimerCallback(WriteMsg); //定义计时器 System.Threading ...

  7. [转载]Android利用convertView优化ListView性能

    本的getView写法 Java代码public View getView(int position, View convertView, ViewGroup parent) {View view = ...

  8. Tomcatserverhttps协议配置简单介绍

    一. 数字签名证书制作 1. 用jdk自带的keytool工具生成证书. 2. 导出证书: 3. 交给CA签名认证: 注意:制作具体步骤演示样例參见附录. 二.改动server.xml文件 改动con ...

  9. java自定义对话框

    package com.matp.view; import java.awt.FlowLayout; public class SimpleDialog extends JDialog impleme ...

  10. 一起学android之怎样获取手机程序列表以及程序相关信息并启动指定程序 (26)

    效果图: 程序列表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpX3FpbmdfeHVfa29uZw==/font/5a6L5L2T/fonts ...