吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6499|回复: 51
上一主题 下一主题
收起左侧

[Python 原创] Python编写一个实时监控屏幕内容变化的程序

  [复制链接]
跳转到指定楼层
楼主
yuupuu 发表于 2023-12-28 14:16 回帖奖励
本帖最后由 yuupuu 于 2023-12-28 14:23 编辑

摘要

有时候想要监控一个界面的内容变化,以确保自己能第一时间留意到,总不能一直看着吧?
于是我写了一个Python脚本去帮我看。原理就是实时获取界面像素,只要像素变化,代表界面有变化。

jiankong.py

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from PIL import ImageGrab
import numpy as np
import time
import requests  # Import the requests library
 
def get_screen_region_screenshot(region):
    """
    获取屏幕指定区域的截图
    """
    screenshot = ImageGrab.grab(bbox=region)
    return np.array(screenshot)
 
def send_http_request():
    """
    发送HTTP请求的函数
    """
    # 替换接收通知的Url,我这里使用的是iOS的Bark App
    url = "https://xxxxxxxxxxxxxxxx"
    payload = {"key": "value"}
    headers = {"Content-Type": "application/json"}
 
    response = requests.post(url, json=payload, headers=headers)
 
    # 打印结果
    print("HTTP Response:", response.text)
 
def monitor_screen_region_changes(region, polling_interval=1):
    """
    监控屏幕指定区域的像素变化
    """
    previous_screenshot = get_screen_region_screenshot(region)
 
    while True:
        current_screenshot = get_screen_region_screenshot(region)
 
        if not np.array_equal(previous_screenshot, current_screenshot):
            print("指定区域的像素发生变化")
            # 发送HTTP请求
            send_http_request()
 
            # 更新前一次的截图
            previous_screenshot = current_screenshot
 
        time.sleep(polling_interval)
 
if __name__ == "__main__":
 
    # 替换为要监控的区域坐标 (left, top, right, bottom)
    # left:左上角距离屏幕左侧的距离(像素)
    # top:左上角距离屏幕上方的距离(像素)
    # right:右下角距离屏幕左侧的距离(像素)
    # bottom:右下角距离屏幕上方的距离(像素)
    region_to_monitor = (0, 0, 100, 100)
     
    monitor_screen_region_changes(region_to_monitor)


如何获得坐标?截图软件一般都有标注像素。



运行



接收通知:



作者
------------------
TANKING

免费评分

参与人数 11吾爱币 +19 热心值 +11 收起 理由
XFJ8021 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
luxiaofeng94 + 1 + 1 我很赞同!
dych1688 + 2 + 1 谢谢@Thanks!
瘾胖子 + 1 + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lian52yy + 1 + 1 用心讨论,共获提升!
迈克杰克卢 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
blindcat + 1 + 1 谢谢@Thanks!
debug_cat + 2 + 1 用心讨论,共获提升!
萌新表示是小白 + 1 + 1 我很赞同!在吾爱居然也能碰到里客云的友友
52bojie + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
hs15511400609 发表于 2023-12-30 14:37
niustark 发表于 2023-12-28 15:25
可以写个检测目标范围内 多长时间内(比如1分钟)不变化 然后提醒吗
用以监测掉线没

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import time
from datetime import datetime, timedelta
import numpy as np
import requests  # Import the requests library
from PIL import ImageGrab
 
 
 
def get_screen_region_screenshot(region):
    """
    获取屏幕指定区域的截图
    """
    screenshot = ImageGrab.grab(bbox=region)
    return np.array(screenshot)
 
 
def send_http_request():
    """
    发送HTTP请求的函数
    """
    # 替换接收通知的Url,我这里使用的是iOS的Bark App
 
    url = "https://xxxxxxxxxxxxxxxx"
 
    payload = {"key": "value"}
    headers = {"Content-Type": "application/json"}
 
    response = requests.post(url, json=payload, headers=headers)
 
    # 打印结果
    print("HTTP Response:", response.text)
 
def send_http_request2():
    """
    发送HTTP请求的函数
    """
    # 替换接收通知的Url,我这里使用的是iOS的Bark App
 
 
    url = "https://xxxxxxxxxxxxxxxx"
 
    payload = {"key": "value"}
    headers = {"Content-Type": "application/json"}
 
    response = requests.post(url, json=payload, headers=headers)
 
    # 打印结果
    print("HTTP Response:", response.text)
 
def monitor_screen_region_changes(region, polling_interval=1, inactivity_duration=60):
    """
    监控屏幕指定区域的像素变化
    """
    previous_screenshot = get_screen_region_screenshot(region)
    last_change_time = datetime.now()
 
    while True:
        current_screenshot = get_screen_region_screenshot(region)
 
        if not np.array_equal(previous_screenshot, current_screenshot):
            print("指定区域的像素发生变化")
            # 发送HTTP请求
            send_http_request()
 
            # 更新前一次的截图和最后改变时间
            previous_screenshot = current_screenshot
 
            last_change_time = datetime.now()
        elif datetime.now() - last_change_time >= timedelta(seconds=inactivity_duration):
            print("内容1分钟未发生变化,请确认!")
            # 发送HTTP请求
            send_http_request2()
 
            # 重置最后改变时间
            last_change_time = datetime.now()
 
        time.sleep(polling_interval)
 
 
if __name__ == "__main__":
    # 替换为要监控的区域坐标 (left, top, right, bottom)
    # left:左上角距离屏幕左侧的距离(像素)
    # top:左上角距离屏幕上方的距离(像素)
    # right:右下角距离屏幕左侧的距离(像素)
    # bottom:右下角距离屏幕上方的距离(像素)
    region_to_monitor = (595, 168, 1554, 806)
    monitor_screen_region_changes(region_to_monitor)

老哥,我也是这样想的。我这里稍微修改了下:原理和楼主这个一样。只是加了个初始时间。实现:1分钟内无变化,发送"内容1分钟未发生变化,请确认!"。如果有变化,还是楼主的这个提醒。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
niustark + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

推荐
huang9126 发表于 2023-12-28 14:58
可以加上鼠标或者图像运动功能
使得界面永远在动,防止锁屏
推荐
T4DNA 发表于 2024-1-2 13:37
这样需要保证一直处于非锁屏状态,hook更好一些
推荐
菜鸟2016 发表于 2024-1-2 14:16

果然如此
推荐
hero2022 发表于 2024-1-5 11:43
send_http_request 把变化后的图发过去就更完美了
推荐
小章大大呀 发表于 2023-12-28 14:44
暂时用不到,但是打个卡支持一波!!!
推荐
a534675219 发表于 2023-12-28 14:57
挺好用的
5#
cxzb1029 发表于 2023-12-28 14:49
支持一下
6#
wapjsx 发表于 2023-12-28 14:52
工程监事有福啦。
7#
ceyowa 发表于 2023-12-28 14:53
这个可以有,可以用于优化录屏
8#
tanglikecuan 发表于 2023-12-28 14:55
挺好的,只有越懒才能有更伟大的创造!
9#
52bojie 发表于 2023-12-28 14:59
学习了,谢谢分享
10#
sjaben 发表于 2023-12-28 15:06
打个卡,点个赞
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-21 10:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表