USER
собери два кода в один чтобы все работало
код 1
cmh, [27.10.2024 23:09]
import pyautogui
import time
import subprocess
import os
def vxod(file_path, start_line=0):
"""Чтение и обработка аккаунтов из файла."""
# Попытка завершить процесс "lgc.exe"
try:
result = subprocess.run(["taskkill", "/f", "/im", "lgc.exe"], check=True, capture_output=True, text=True)
print("Процесс lgc.exe успешно завершен. Вывод:", result.stdout)
except subprocess.CalledProcessError as e:
print("Не удалось завершить процесс lgc.exe. Ошибка:", e.stdout)
# Попытка удалить файл
config_path = "C:/Users/keros/AppData/Roaming/Lesta/GameCenter/user_info.xml"
try:
if os.path.exists(config_path):
os.remove(config_path)
print(f"Файл {config_path} успешно удален.")
else:
print(f"Файл {config_path} не найден.")
except Exception as e:
print(f"Не удалось удалить файл {config_path}: {e}")
# Задержка в 2 секунды перед запуском lgc.exe
time.sleep(2)
# Открытие lgc.exe
lgc_path = "D:/Lesta/GameCenter/lgc.exe"
try:
subprocess.Popen(lgc_path)
print(f"Файл {lgc_path} успешно открыт.")
except Exception as e:
print(f"Не удалось открыть файл {lgc_path}: {e}")
# Продолжение остальных действий в функции
try:
with open(file_path, 'r') as file:
lines = file.readlines()
for index in range(start_line, len(lines)):
line = lines[index].strip()
if line:
email, password = line.split(':')
print(f"Загружен аккаунт: email = {email}, пароль = {password}")
# Процесс автоматизации для предоставленного логина и пароля
automate_login(email, password)
# После всех действий для аккаунта вызываем obuch и передаем следующую строку
obuch(index + 1, file_path) # Передаем следующую строку для продолжения
return # Завершаем функцию после обработки текущей строки
print("Все аккаунты обработаны.")
except FileNotFoundError:
print(f"Файл не найден: {file_path}")
except Exception as e:
print(f"Произошла ошибка при обработке файла: {e}")
def automate_login(email, password):
"""Производит автоматизацию процесса входа."""
# Поиск и клик по изображению "voiti.png"
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/voiti.png", confidence=0.8)
if location:
print(f"Найдено изображение 'voiti.png' на координатах: {location}")
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'voiti.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'voiti.png': {e}")
time.sleep(2) # Пауза перед повторной попыткой
# Ожидание перед вводом данных
time.sleep(5)
# Поиск и клик по изображению "mail.png", затем ввод email
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/mail.png", confidence=0.8)
if location:
print(f"Найдено изображение 'mail.png' на координатах: {location}")
pyautogui.click(location)
pyautogui.write(email, interval=0.1) # Ввод email
break
else:
print("Не удалось найти изображение 'mail.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'mail.png': {e}")
time.sleep(2)
cmh, [27.10.2024 23:09]
# Поиск и клик по изображению "password.png", затем ввод пароля
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/password.png", confidence=0.8)
if location:
print(f"Найдено изображение 'password.png' на координатах: {location}")
pyautogui.click(location)
pyautogui.write(password, interval=0.1) # Ввод пароля
break
else:
print("Не удалось найти изображение 'password.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'password.png': {e}")
time.sleep(2)
# Поиск и клик по изображению "vxodd.png" после ввода данных
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/vxodd.png", confidence=0.8)
if location:
print(f"Найдено изображение 'vxodd.png' на координатах: {location}")
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'vxodd.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'vxodd.png': {e}")
time.sleep(2)
# Поиск и клик по изображению "igraatb.png" после нажатия на "vxodd.png"
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/igraatb.png", confidence=0.8)
if location:
print(f"Найдено изображение 'igraatb.png' на координатах: {location}")
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'igraatb.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'igraatb.png': {e}")
time.sleep(2)
def obuch(start_line, file_path, confidence=0.8):
# Ищем "vboy.png" отдельно после "igraatb.png"
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/vboy.png", confidence=confidence)
if location:
print(f"Найдено изображение 'vboy.png' на координатах: {location}")
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'vboy.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка с 'vboy.png': {e}")
# Список изображений для совместного поиска
images = [
"D:/fileobuch/vboy.png",
"D:/fileobuch/taktocho.png",
"D:/fileobuch/vibrat.png",
"D:/fileobuch/igrat.png",
]
while True: # Продолжаем цикл до нахождения "igrat.png"
igrat_found = False
for image_path in images:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=confidence)
if location:
print(f"Найдено изображение '{image_path}' на координатах: {location}")
pyautogui.click(location)
if image_path.endswith("igrat.png"):
igrat_found = True
break
except Exception as e:
print(f"Произошла ошибка с '{image_path}': {e}")
if igrat_found:
print("Переход к функции okonch() после нахождения igrat.png")
okonch(start_line, file_path)
return # Завершаем выполнение obuch
def okonch(start_line, file_path):
print("Переход к функции okonch()")
# Поиск и клик по изображениям в функции okonch
images = [
"D:/fileobuch/settings.png",
"D:/fileobuch/pozdr.png",
{"path": "D:/fileobuch/takto4.png", "timeout": 10},
"D:/fileobuch/propustit.png",
"D:/fileobuch/propustit2.png"
]
cmh, [27.10.2024 23:09]
for entry in images:
if isinstance(entry, dict):
image_path = entry['path']
timeout = entry['timeout']
start_time = time.time()
while time.time() - start_time < timeout:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=0.8)
if location:
print(f"Найдено изображение '{image_path}' на координатах: {location}")
pyautogui.click(location)
break
else:
print(f"Не удалось найти изображение '{image_path}'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке '{image_path}': {e}")
time.sleep(2)
else:
image_path = entry
while True:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=0.8)
if location:
print(f"Найдено изображение '{image_path}' на координатах: {location}")
pyautogui.click(location)
break
else:
print(f"Не удалось найти изображение '{image_path}'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке '{image_path}': {e}")
time.sleep(2)
# Закрытие процесса "tanksblitz.exe" после нахождения и обработки "propustit2.png"
try:
subprocess.run(["taskkill", "/f", "/im", "tanksblitz.exe"], check=True)
print("Процесс tanksblitz.exe успешно завершен.")
except subprocess.CalledProcessError as e:
print("Не удалось завершить процесс tanksblitz.exe:", e)
# Повторный запуск функции для обработки следующего нашего
vxod(file_path, start_line)
# Вызов функции для обработки аккаунтов
vxod("D:/fileobuch/accs.txt")
код 2
import pyautogui
import time
import subprocess
import os
import multiprocessing
import pygetwindow as gw
def launch_in_sandbox(sandbox_name, lgc_path):
"""Запуск lgc.exe в указанной песочнице."""
sandboxie_path = "D:/Sandboxie-Plus/Start.exe"
if not os.path.exists(sandboxie_path):
print(f"Путь к Sandboxie не найден: {sandboxie_path}")
return
cmd = f'"{sandboxie_path}" /box:{sandbox_name} "{lgc_path}"'
try:
subprocess.Popen(cmd, shell=True)
print(f"Запущено в песочнице {sandbox_name}: {lgc_path}")
except Exception as e:
print(f"Ошибка при запуске в песочнице {sandbox_name}: {e}")
def prepare_and_launch(file_path, sandbox_name, start_line, position):
"""Подготавливает среду выполнения и запускает автоматизацию."""
close_process_and_delete_file()
lgc_path = "D:/Lesta/GameCenter/lgc.exe"
if not os.path.exists(lgc_path):
print(f"Файл lgc.exe не найден по адресу: {lgc_path}")
return
launch_in_sandbox(sandbox_name, lgc_path)
time.sleep(10)
vxod(file_path, sandbox_name, start_line, position)
def close_process_and_delete_file():
"""Завершает процесс lgc.exe и удаляет конфигурационный файл."""
try:
subprocess.run(["taskkill", "/f", "/im", "lgc.exe"], check=True)
print("Процесс lgc.exe успешно завершен.")
except subprocess.CalledProcessError as e:
print("Не удалось завершить процесс lgc.exe.", e)
config_path = "C:/Users/keros/AppData/Roaming/Lesta/GameCenter/user_info.xml"
try:
if os.path.exists(config_path):
os.remove(config_path)
print(f"Файл {config_path} успешно удален.")
else:
print(f"Файл {config_path} не найден.")
except Exception as e:
print(f"Не удалось удалить файл {config_path}: {e}")
def vxod(file_path, sandbox_name, start_line=0, position=(0, 0)):
"""Чтение и обработка аккаунтов из файла."""
try:
with open(file_path, 'r') as file:
lines = file.readlines()
for index in range(start_line, len(lines)):
line = lines[index].strip()
if line:
email, password = line.split(':')
print(f"Запуск аккаунта: {email} в песочнице {sandbox_name}")
process = multiprocessing.Process(target=automate_login, args=(email, password, position))
process.start()
process.join()
obuch(index + 1, file_path, sandbox_name)
print("Все аккаунты обработаны.")
except FileNotFoundError:
print(f"Файл не найден: {file_path}")
except Exception as e:
print(f"Произошла ошибка при обработке файла: {e}")
def move_window_to_position(title, position):
"""Перемещает окно приложения в заданное положение на экране."""
windows = gw.getWindowsWithTitle(title)
if windows:
win = windows[0]
win.moveTo(*position)
print(f"Окно {title} перемещено в {position}")
else:
print(f"Окно с заголовком {title} не найдено.")
def automate_login(email, password, position):
"""Производит автоматизацию процесса входа."""
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/voiti.png", confidence=0.8)
if location:
pyautogui.click(location)
window_title = "LGC Window Title" # Замените нужным заголовком окна
move_window_to_position(window_title, position)
break
else:
print("Не удалось найти изображение 'voiti.png'. Повторная попытка...")
except Exception as e:
print(f"Ошибка при обработке 'voiti.png': {e}")
time.sleep(2)
time.sleep(5)
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/mail.png", confidence=0.8)
if location:
pyautogui.click(location)
pyautogui.write(email, interval=0.1)
break
except Exception as e:
print(f"Ошибка при обработке 'mail.png': {e}")
time.sleep(2)
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/password.png", confidence=0.8)
if location:
pyautogui.click(location)
pyautogui.write(password, interval=0.1)
break
except Exception as e:
print(f"Ошибка при обработке 'password.png': {e}")
time.sleep(2)
def obuch(start_line, file_path, sandbox_name, confidence=0.8):
"""Поиск и автоматизация шагов после успешного входа."""
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/vboy.png", confidence=confidence)
if location:
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'vboy.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка с 'vboy.png': {e}")
images = [
"D:/fileobuch/vboy.png",
"D:/fileobuch/taktocho.png",
"D:/fileobuch/vibrat.png",
"D:/fileobuch/igrat.png",
]
while True:
igrat_found = False
for image_path in images:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=confidence)
if location:
pyautogui.click(location)
print(f"Найдено изображение '{image_path}' на координатах: {location}")
if image_path.endswith("igrat.png"):
igrat_found = True
break
except Exception as e:
print(f"Произошла ошибка с '{image_path}': {e}")
if igrat_found:
print("Переход к функции okonch() после нахождения igrat.png")
okonch(start_line, file_path, sandbox_name)
return
def okonch(start_line, file_path, sandbox_name):
print("Переход к функции okonch()")
images = [
"D:/fileobuch/settings.png",
"D:/fileobuch/pozdr.png",
{"path": "D:/fileobuch/takto4.png", "timeout": 10},
"D:/fileobuch/propustit.png",
"D:/fileobuch/propustit2.png"
]
for entry in images:
if isinstance(entry, dict):
image_path = entry['path']
timeout = entry['timeout']
start_time = time.time()
while time.time() - start_time < timeout:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=0.8)
if location:
pyautogui.click(location)
break
else:
print(f"Не удалось найти изображение '{image_path}'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке '{image_path}': {e}")
time.sleep(2)
else:
image_path = entry
while True:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=0.8)
if location:
pyautogui.click(location)
break
else:
print(f"Не удалось найти изображение '{image_path}'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке '{image_path}': {e}")
time.sleep(2)
try:
subprocess.run(["taskkill", "/f", "/im", "tanksblitz.exe"], check=True)
print("Процесс tanksblitz.exe успешно завершен.")
except subprocess.CalledProcessError as e:
print("Не удалось завершить процесс tanksblitz.exe:", e)
vxod(file_path, sandbox_name, start_line)
if __name__ == "__main__":
# Настройки песочниц и координат для каждого окна
sandbox_configs = [
{"sandbox": "Sandbox1", "file_path": "D:/fileobuch/accs.txt", "position": (0, 0)},
{"sandbox": "Sandbox2", "file_path": "D:/fileobuch/accs.txt", "position": (960, 0)},
{"sandbox": "Sandbox3", "file_path": "D:/fileobuch/accs.txt", "position": (1920, 0)},
{"sandbox": "Sandbox4", "file_path": "D:/fileobuch/accs.txt", "position": (0, 540)},
{"sandbox": "Sandbox5", "file_path": "D:/fileobuch/accs.txt", "position": (960, 540)},
{"sandbox": "Sandbox6", "file_path": "D:/fileobuch/accs.txt", "position": (1920, 540)},
]
for config in sandbox_configs:
prepare_and_launch(config["file_path"], config["sandbox"], 0, config["position"])ASSISTANT
Чтобы объединить два кода в единый код, нужно интегрировать дополнительные функции, связанные с запуском в песочнице и управлением окнами, из кода 2 в код 1. Основными задачами будут объединение функций `launch_in_sandbox`, `prepare_and_launch`, и `move_window_to_position` с кодом 1, и добавление параметров для запуска в песочнице и позиционирования окна.
Вот интегрированный код:
```python
import pyautogui
import time
import subprocess
import os
import multiprocessing
import pygetwindow as gw
def launch_in_sandbox(sandbox_name, lgc_path):
"""Запуск lgc.exe в указанной песочнице."""
sandboxie_path = "D:/Sandboxie-Plus/Start.exe"
if not os.path.exists(sandboxie_path):
print(f"Путь к Sandboxie не найден: {sandboxie_path}")
return
cmd = f'"{sandboxie_path}" /box:{sandbox_name} "{lgc_path}"'
try:
subprocess.Popen(cmd, shell=True)
print(f"Запущено в песочнице {sandbox_name}: {lgc_path}")
except Exception as e:
print(f"Ошибка при запуске в песочнице {sandbox_name}: {e}")
def prepare_and_launch(file_path, sandbox_name, start_line, position):
"""Подготавливает среду выполнения и запускает автоматизацию."""
close_process_and_delete_file()
lgc_path = "D:/Lesta/GameCenter/lgc.exe"
if not os.path.exists(lgc_path):
print(f"Файл lgc.exe не найден по адресу: {lgc_path}")
return
launch_in_sandbox(sandbox_name, lgc_path)
time.sleep(10)
vxod(file_path, sandbox_name, start_line, position)
def close_process_and_delete_file():
"""Завершает процесс lgc.exe и удаляет конфигурационный файл."""
try:
subprocess.run(["taskkill", "/f", "/im", "lgc.exe"], check=True)
print("Процесс lgc.exe успешно завершен.")
except subprocess.CalledProcessError as e:
print("Не удалось завершить процесс lgc.exe.", e)
config_path = "C:/Users/keros/AppData/Roaming/Lesta/GameCenter/user_info.xml"
try:
if os.path.exists(config_path):
os.remove(config_path)
print(f"Файл {config_path} успешно удален.")
else:
print(f"Файл {config_path} не найден.")
except Exception as e:
print(f"Не удалось удалить файл {config_path}: {e}")
def vxod(file_path, sandbox_name="", start_line=0, position=(0, 0)):
"""Чтение и обработка аккаунтов из файла."""
try:
with open(file_path, 'r') as file:
lines = file.readlines()
for index in range(start_line, len(lines)):
line = lines[index].strip()
if line:
email, password = line.split(':')
print(f"Запуск аккаунта: {email} в песочнице {sandbox_name}")
process = multiprocessing.Process(target=automate_login, args=(email, password, position))
process.start()
process.join()
obuch(index + 1, file_path, sandbox_name)
print("Все аккаунты обработаны.")
except FileNotFoundError:
print(f"Файл не найден: {file_path}")
except Exception as e:
print(f"Произошла ошибка при обработке файла: {e}")
def move_window_to_position(title, position):
"""Перемещает окно приложения в заданное положение на экране."""
windows = gw.getWindowsWithTitle(title)
if windows:
win = windows[0]
win.moveTo(*position)
print(f"Окно {title} перемещено в {position}")
else:
print(f"Окно с заголовком {title} не найдено.")
def automate_login(email, password, position):
"""Производит автоматизацию процесса входа."""
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/voiti.png", confidence=0.8)
if location:
pyautogui.click(location)
window_title = "LGC Window Title" # Замените нужным заголовком окна
move_window_to_position(window_title, position)
break
else:
print("Не удалось найти изображение 'voiti.png'. Повторная попытка...")
except Exception as e:
print(f"Ошибка при обработке 'voiti.png': {e}")
time.sleep(2)
# Продолжение автоматизации (ввод email и пароля)
time.sleep(5)
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/mail.png", confidence=0.8)
if location:
pyautogui.click(location)
pyautogui.write(email, interval=0.1)
break
else:
print("Не удалось найти изображение 'mail.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'mail.png': {e}")
time.sleep(2)
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/password.png", confidence=0.8)
if location:
pyautogui.click(location)
pyautogui.write(password, interval=0.1)
break
else:
print("Не удалось найти изображение 'password.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'password.png': {e}")
time.sleep(2)
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/vxodd.png", confidence=0.8)
if location:
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'vxodd.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'vxodd.png': {e}")
time.sleep(2)
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/igraatb.png", confidence=0.8)
if location:
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'igraatb.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке 'igraatb.png': {e}")
time.sleep(2)
def obuch(start_line, file_path, sandbox_name="", confidence=0.8):
"""Поиск и автоматизация шагов после успешного входа."""
while True:
try:
location = pyautogui.locateCenterOnScreen("D:/fileobuch/vboy.png", confidence=confidence)
if location:
pyautogui.click(location)
break
else:
print("Не удалось найти изображение 'vboy.png'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка с 'vboy.png': {e}")
images = [
"D:/fileobuch/vboy.png",
"D:/fileobuch/taktocho.png",
"D:/fileobuch/vibrat.png",
"D:/fileobuch/igrat.png",
]
while True:
igrat_found = False
for image_path in images:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=confidence)
if location:
pyautogui.click(location)
print(f"Найдено изображение '{image_path}' на координатах: {location}")
if image_path.endswith("igrat.png"):
igrat_found = True
break
except Exception as e:
print(f"Произошла ошибка с '{image_path}': {e}")
if igrat_found:
print("Переход к функции okonch() после нахождения igrat.png")
okonch(start_line, file_path, sandbox_name)
return
def okonch(start_line, file_path, sandbox_name=""):
print("Переход к функции okonch()")
images = [
"D:/fileobuch/settings.png",
"D:/fileobuch/pozdr.png",
{"path": "D:/fileobuch/takto4.png", "timeout": 10},
"D:/fileobuch/propustit.png",
"D:/fileobuch/propustit2.png"
]
for entry in images:
if isinstance(entry, dict):
image_path = entry['path']
timeout = entry['timeout']
start_time = time.time()
while time.time() - start_time < timeout:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=0.8)
if location:
pyautogui.click(location)
break
else:
print(f"Не удалось найти изображение '{image_path}'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке '{image_path}': {e}")
time.sleep(2)
else:
image_path = entry
while True:
try:
location = pyautogui.locateCenterOnScreen(image_path, confidence=0.8)
if location:
pyautogui.click(location)
break
else:
print(f"Не удалось найти изображение '{image_path}'. Повторная попытка...")
except Exception as e:
print(f"Произошла ошибка при обработке '{image_path}': {e}")
time.sleep(2)
try:
subprocess.run(["taskkill", "/f", "/im", "tanksblitz.exe"], check=True)
print("Процесс tanksblitz.exe успешно завершен.")
except subprocess.CalledProcessError as e:
print("Не удалось завершить процесс tanksblitz.exe:", e)
vxod(file_path, sandbox_name, start_line)
if __name__ == "__main__":
# Настройки песочниц и координат для каждого окна
sandbox_configs = [
{"sandbox": "Sandbox1", "file_path": "D:/fileobuch/accs.txt", "position": (0, 0)},
{"sandbox": "Sandbox2", "file_path": "D:/fileobuch/accs.txt", "position": (960, 0)},
{"sandbox": "Sandbox3", "file_path": "D:/fileobuch/accs.txt", "position": (1920, 0)},
{"sandbox": "Sandbox4", "file_path": "D:/fileobuch/accs.txt", "position": (0, 540)},
{"sandbox": "Sandbox5", "file_path": "D:/fileobuch/accs.txt", "position": (960, 540)},
{"sandbox": "Sandbox6", "file_path": "D:/fileobuch/accs.txt", "position": (1920, 540)},
]
for config in sandbox_configs:
prepare_and_launch(config["file_path"], config["sandbox"], 0, config["position"])
```
В этой версии кода было выполнено:
- Интеграция функций запуска в песочнице и позиционирования окна в общий поток выполнения.
- Добавление поддержки нескольких песочниц и управления окнами из кода 2 в основной код.
- Объединение функционала обработки аккаунтов и выполнения автоматизированных действий в песочницах.