Я пытаюсь обнаружить некоторые точки на экране, если любое из этих изменений цвета получит уведомление о телеграмме, все это прекрасно работает, но у меня ошибка, которую я не знаю, как исправить, через некоторое время я установил 1 сек.задержка между каждой проверкой, но через 20-25 минут я получаю телеграмму с уведомлением о том, что пиксель изменился, но это не так, и когда я проверяю, какие цвета его чтения, он говорит "-1", я должен закрыть и снова открыть приложениепоэтому он будет снова нормально читать цвета, у меня нет никакого антивируса
, если я уменьшу задержку между проверками, программа будет работать быстрее.
так я сохраняю каждую точку, которую хочу проверить
def do_setup():
work_queue = list()
print("[!] Entering setup mode")
print("[!] Move your mouse and press p to add the point to the work queue")
print("[!] press q to finish setup")
while True:
k = check_keys()
if k:
if k.lower() == b"q":
# quit setup already
print(f"Finishing setup with {len(work_queue)} points")
CONFIG["last_work"] = work_queue
break
if k.lower() == b"p":
x, y = get_cursor()
color = get_color(x, y)
work_queue.append({
"abcissa": x,
"ordinate": y,
"index": len(work_queue),
"last_color": color,
})
print(f"Point({x},{y}) {color} added, {len(work_queue)} points")
CONFIG["last_work"] = work_queue
save_config(work_queue)
return work_queue
def get_color(x, y):
"""
"""
# return win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x, y)
color = windll.gdi32.GetPixel(
windll.user32.GetDC(0), x, y
)
if color == -1:
print(f"get_color returned -1, coordinates ({x}, {y})")
color = 9000000
return color
и это мой главный
def main():
if len(CONFIG["last_work"]) == 0 and not check_config():
setup_telegram()
do_setup()
COUNTER = 0
print("[!] Entering main loop, press s for setup or esc to exit")
while True:
time.sleep(1)
tick = time.time()
for i, item in enumerate(CONFIG["last_work"]):
color = get_color(item["abcissa"], item["ordinate"])
if check_color(color, item["last_color"]):
alert_telegram(item)
item["last_color"] = color
k = check_keys()
if k:
# ESC key
if k == b"\x1b":
print("Exit")
break
elif k.lower() == b"s":
print("Entering setup mode")
do_setup()
# loop limit counter, 5 times, disable later
COUNTER += 1
if COUNTER == COUNTER_LIMIT:
break
tock = time.time()
print(f"Looped in {tock - tick:.4f}")
if name == " main ": main ()