标题没想好

放只星野镇楼(迫真

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新图(?

这 河 里 吗

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇