监控孩子用电脑都干了啥?!

是不是打开电脑就发觉时间过得超级快?

不知道把时间都花在了哪里?

 

我们来做一个监控电脑上使用软件的时间的脚本吧!

 

首先我们先安装win32gui库

pip install win32gui

然后先引入win32gui和time两个库

import time
import win32gui

因为要持续监听,写一个死循环,间隔1秒循环一次

while True:
    time.sleep(1)

想要知道电脑此刻最上层的窗口是什么,使用win32gui.GetForegroundWindow()获得window桌面系统最上层的窗口,返回窗口句柄(int)

hwnd = win32gui.GetForegroundWindow()

拿到窗口句柄以后我们要建立一个字典,将窗口句柄给存起来,然后根据句柄获取窗口的名称win32gui.GetWindowText(hwnd),再拿到当前的时间,一并记录到字典中

title = win32gui.GetWindowText(hwnd)
list = use_app_data.get(hwd)
if list == None or len(list) <= 0:
    list = []
    use_app_data[hwd] = list
    list.append({'title': title, 'start': time.time(), 'end': 0, 'total': 0})

如果窗口切换了,句柄会变化,所以记录下之前的句柄,与当前的句柄进行对比,如果发生改变,则说明用户切换了窗口,此时记录窗口的使用时间,放入字典,最后做统计。

 

完整的代码如下:



# 监控电脑使用各个窗口(软件)的时长

import win32gui
import time

use_app_data = {}
currentWindow = 0

# def save_data_excel(data):
#     workbook = xlwt.Workbook()
#     wookbook

if __name__ == '__main__':
    try:
        starttime = time.localtime()
        print('开始监控')
        print(time.strftime("%Y-%m-%d %H:%M:%S", starttime))
        while True:
            # 获取最上层的窗口
            hwd = win32gui.GetForegroundWindow()
            # 检查窗口是不是微信
            if hwd != currentWindow:
                if currentWindow > 0:
                    data = list[len(list)-1]
                    if data['end'] == 0:
                        data['end'] = time.time()
                        data['total'] = data['end'] - data['start']

                currentWindow = hwd
                title = win32gui.GetWindowText(hwd)
                list = use_app_data.get(hwd)
                if list == None or len(list) <= 0:
                    list = []
                    use_app_data[hwd] = list
                    list.append({'title': title, 'start': time.time(), 'end': 0, 'total': 0})
                else:
                    data = list[len(list)-1]
                    if data['end'] != 0:
                        list.append({'title': title, 'start': time.time(), 'end': 0, 'total': 0})
                    else:
                        data['end'] = time.time()
                        data['total'] = data['end'] - data['start']
            time.sleep(1)
    except:
        print(use_app_data)

最后加入一个try...except 用来监控Ctrl+C 的时候终端监听程序,然后打印结果。

 

PS:

下一期将介绍把监控的数据存入到excel表格当中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值