Автоматизировать процесс работы программы Active WebCam

Задача: Я использую программу Active WebCam для записи с веб-камеры, и хочу автоматизировать процесс её работы, так чтобы:

  1. Программа Active WebCam постоянно находилась свёрнутой в системный трей (область уведомлений) и не выводилась на передний план.

  2. Запись видео начиналась при активности (например, при касании тачскрина или при движении мыши), даже если программа свёрнута.

  3. При отсутствии активности запись останавливалась или приостанавливалась (но программа не закрывалась).

  4. Горячие клавиши, такие как Ctrl+R, в Active WebCam работают только когда окно приложения активно (находится на переднем плане). Однако, когда программа находится в системном трее, эти горячие клавиши не срабатывают.

  5. При нажатии на значок Active WebCam в системном трее открывается контекстное меню, в котором есть опция "Record video clip", запускающая запись (сочетание горячих клавиш Ctrl+R привязано к этой команде).

Основные цели: Автоматизация работы Active WebCam:

Программа должна находиться в системном трее и оставаться свёрнутой. Управление записью должно происходить автоматически, даже когда программа не на переднем плане. Запуск и остановка записи на основе активности:

Если программа находится в системном трее, при активности мыши (например, при касании тачскрина) запись видео должна автоматически начинаться. При отсутствии активности в течение заданного времени (например, 5 секунд) запись должна автоматически останавливаться. Эмуляция нажатий или выбор опций из меню программы:

Проблемы: Active WebCam не реагирует на горячие клавиши, когда свёрнута в системный трей. Мне нужно каким-то образом программно взаимодействовать с программой, даже когда она свёрнута и находится в трее. Задача заключается в автоматизации управления программой без её разворачивания на передний план.

все что мне удавался сделать, это останавить процесс Active webcam и повтрно запустить для записи. Но это не лучшее решение.

import time
import psutil
import pyautogui
import subprocess

# Путь к программе Active Web Cam
program_path = r"C:\Program Files\Active Web Cam\WebCam.exe"  # Убедитесь в правильности пути

# Время последней активности мыши
last_mouse_move = time.time()
last_mouse_pos = pyautogui.position()  # Начальные координаты мыши


# Функция для проверки, запущен ли процесс
def is_process_running(process_name):
    for proc in psutil.process_iter(['pid', 'name']):
        if proc.info['name'] == process_name:
            return proc
    return None


# Функция для запуска процесса
def run_process(program_path):
    try:
        # Запуск процесса через командную строку с использованием start
        subprocess.Popen(f'start "" "{program_path}"', shell=True)
        time.sleep(2)  # Даем время программе запуститься

        # Проверяем, запустился ли процесс через psutil
        if is_process_running("WebCam.exe"):
            print("Программа Active Web Cam успешно запущена")
        else:
            print("Ошибка: программа Active Web Cam не запущена")
    except Exception as e:
        print(f"Ошибка при запуске программы: {e}")


# Функция для приостановки процесса
def suspend_process(process_name):
    proc = is_process_running(process_name)
    if proc:
        proc.suspend()  # Приостанавливаем процесс
        print("Программа Active Web Cam приостановлена")


# Функция для возобновления процесса
def resume_process(process_name):
    proc = is_process_running(process_name)
    if proc:
        proc.resume()  # Возобновляем процесс
        print("Программа Active Web Cam возобновлена")


# Основной цикл для отслеживания активности
while True:
    # Получаем текущие координаты мыши
    current_mouse_pos = pyautogui.position()

    # Проверяем, изменилась ли позиция мыши
    if current_mouse_pos != last_mouse_pos:
        last_mouse_move = time.time()
        last_mouse_pos = current_mouse_pos  # Обновляем координаты мыши

        # Если процесс приостановлен, возобновляем его
        if is_process_running("WebCam.exe"):
            resume_process("WebCam.exe")
        else:
            # Если процесс не запущен, запускаем его
            run_process(program_path)

    else:
        # Если прошло более 5 секунд без активности мыши, приостанавливаем процесс
        if time.time() - last_mouse_move > 5:  # 5 секунд
            if is_process_running("WebCam.exe"):
                suspend_process("WebCam.exe")

    # Ожидаем 0.5 секунд перед следующей проверкой
    time.sleep(0.5)

как можно еще сделать?


Ответы (0 шт):