放只星野镇楼(迫真
py脚本(1)
import tkinter as tk
from tkinter import ttk
import os
import subprocess
import threading
import time
COUNTDOWN = 15
REPEAT_DELAY = 120
FORCE_KILL_DELAY = 3
def run_kill():
try:
subprocess.Popen(["kill.bat"], shell=True)
except Exception as e:
print("Error running kill.bat:", e)
def create_window(force_mode=False):
def on_continue():
win.destroy()
if not force_mode:
# 等待2分钟后再次弹窗
threading.Timer(REPEAT_DELAY, lambda: create_window(force_mode=True)).start()
def on_exit():
run_kill()
win.destroy()
def force_exit():
msg_label.config(text="正在进行强制下课进程...\n3秒后自动执行 kill.bat")
progress_bar.stop()
countdown_label.config(text="")
button_frame.pack_forget()
win.update()
time.sleep(FORCE_KILL_DELAY)
run_kill()
win.destroy()
def update_timer():
nonlocal seconds_left
while seconds_left > 0:
countdown_label.config(text=f"还有 {seconds_left} 秒自动关闭所有进程,请尽快做出选择")
progress_bar['value'] = 100 - seconds_left * (100 / COUNTDOWN)
win.update()
time.sleep(1)
seconds_left -= 1
# 超时自动执行
if not force_mode:
run_kill()
win.destroy()
else:
force_exit()
win = tk.Tk()
win.title("通知")
win.geometry("500x200")
win.resizable(False, False)
win.attributes("-topmost", True)
# 隐藏关闭/最小化/最大化按钮(Windows only)
win.overrideredirect(True)
# 置顶显示
win.lift()
win.attributes("-topmost", True)
# 内容区域
msg = "已到达最大拖堂时间限制,是否下课(by.韭)?" if not force_mode else "正在进行强制下课进程..."
msg_label = tk.Label(win, text=msg, font=("微软雅黑", 12), pady=10)
msg_label.pack()
progress_bar = ttk.Progressbar(win, maximum=100, length=400)
progress_bar.pack(pady=10)
countdown_label = tk.Label(win, text="", font=("微软雅黑", 10))
countdown_label.pack()
button_frame = tk.Frame(win)
if not force_mode:
tk.Button(button_frame, text="继续上课", command=on_continue, width=15).pack(side="left", padx=20)
tk.Button(button_frame, text="现在下课", command=on_exit, width=15).pack(side="right", padx=20)
button_frame.pack(pady=10)
# 启动倒计时线程
seconds_left = COUNTDOWN
threading.Thread(target=update_timer, daemon=True).start()
win.mainloop()
# 启动初始窗口
create_window()
py脚本(2)
import tkinter as tk
from tkinter import ttk
import os
import subprocess
class ClassMonitor:
def __init__(self):
self.root = tk.Tk()
self.root.withdraw() # 隐藏主窗口
self.create_main_window()
self.root.mainloop()
def create_main_window(self):
self.window = tk.Toplevel(self.root)
self.window.overrideredirect(True) # 移除窗口装饰
self.window.attributes("-topmost", True) # 置顶
# 窗口居中
screen_width = self.window.winfo_screenwidth()
screen_height = self.window.winfo_screenheight()
window_width = 400
window_height = 200
x = (screen_width - window_width) // 2
y = (screen_height - window_height) // 2
self.window.geometry(f"{window_width}x{window_height}+{x}+{y}")
# 界面元素
tk.Label(self.window, text="已到达最大拖堂时间限制,是否下课(by.韭)?").pack(pady=10)
self.progress = ttk.Progressbar(self.window, length=300, maximum=15)
self.progress.pack()
self.time_label = tk.Label(self.window, text="还有15秒自动关闭所有进程,请尽快做出选择")
self.time_label.pack(pady=5)
btn_frame = tk.Frame(self.window)
btn_frame.pack(pady=10)
tk.Button(btn_frame, text="继续上课", command=self.continue_class).pack(side=tk.LEFT, padx=10)
tk.Button(btn_frame, text="现在下课", command=self.kill_process).pack(side=tk.LEFT, padx=10)
# 倒计时设置
self.remaining = 15
self.update_timer()
def update_timer(self):
self.remaining -= 1
self.progress["value"] = 15 - self.remaining
self.time_label.config(text=f"还有{self.remaining}秒自动关闭所有进程,请尽快做出选择")
if self.remaining <= 0:
self.kill_process()
else:
self.window.after(1000, self.update_timer)
def continue_class(self):
self.window.destroy()
self.root.after(120000, self.create_main_window) # 2分钟后重新创建窗口
def kill_process(self):
self.window.destroy()
bat_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "kill.bat")
subprocess.Popen(bat_path, shell=True)
self.force_kill()
def force_kill(self):
force_window = tk.Toplevel(self.root)
force_window.overrideredirect(True)
force_window.attributes("-topmost", True)
# 窗口居中
screen_width = force_window.winfo_screenwidth()
screen_height = force_window.winfo_screenheight()
window_width = 400
window_height = 200
x = (screen_width - window_width) // 2
y = (screen_height - window_height) // 2
force_window.geometry(f"{window_width}x{window_height}+{x}+{y}")
tk.Label(force_window, text="正在进行强制下课进程...").pack(pady=10)
force_progress = ttk.Progressbar(force_window, length=300, maximum=3)
force_progress.pack()
time_label = tk.Label(force_window, text="3秒后关闭所有进程")
time_label.pack(pady=5)
# 强制倒计时
def countdown(remaining=3):
time_label.config(text=f"{remaining}秒后关闭所有进程")
force_progress["value"] = 3 - remaining
if remaining > 0:
force_window.after(1000, countdown, remaining-1)
else:
bat_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "kill.bat")
subprocess.Popen(bat_path, shell=True)
self.root.destroy()
countdown()
if __name__ == "__main__":
ClassMonitor()
kill脚本
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
@echo on
taskkill /f /im POWERPNT.EXE
taskkill /f /im WINWORD.EXE
taskkill /f /im SumatraPDF.exe
taskkill /f /im explorer.exe
start explorer.exe
赛博便签
Ci新图(?
这 河 里 吗