四川卫生康复职业学校 — 桌面文件回收 skill
> 一只会帮你把文件丢进回收站的小怪兽。右键文件即可「召唤怪兽吃掉」,或拖文件到它身上。
> 确认后文件进入 Windows 回收站(可还原)。整套引擎基于 PySide6,已在 Windows 跑通。
🎯 完整工作流
Phase 0:环境(一次性)
cd 四川卫生康复职业学校-桌面文件回收skill
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt # PySide6 + Pillow + numpy
Phase 1:准备素材(可选)
- 默认已带像素怪兽素材(
assets/目录:base / idle / walk / eat / rest 等帧)。 - 想换形象:把透明 PNG 帧按同名替换进
assets/即可(base.png为待机帧必需)。
Phase 2:运行
python run_pet.py
# 或:python pet_main.py
启动后:
- 🐲 小怪兽出现在桌面左下角(透明置顶)。
- 右键桌面任意文件/文件夹 → 菜单「召唤怪兽吃掉」→ 怪兽走过去并弹出确认框。
- 直接把文件拖到怪兽身上 → 就地弹出确认框。
- 确认「是的」→ 文件送回收站;「不是」→ 取消。
Phase 3:关闭
- 右键怪兽 → 菜单「退出」;或系统托盘图标右键「退出」。
📂 目录结构
四川卫生康复职业学校-桌面文件回收skill/
├── SKILL.md ← 本文件(工作流 + 功能 + 陷阱)
├── README.md ← 30 秒上手 + 结构说明
├── requirements.txt ← PySide6 + Pillow + numpy
├── run_pet.py ← 启动器(加入 sys.path 后运行 pet_main)
├── pet_main.py ← 入口(单实例 Mutex + --eat 召唤模式)
├── monster_pet.py ← 怪兽逻辑(状态机 + 确认框 + 回收站 + 右键菜单)
└── assets/ ← 像素怪兽帧素材(base/idle/walk/eat/rest 等)
🧩 核心功能清单
| 功能 | 说明 |
|---|---|
| 右键召唤 | 注册 HKCU 右键菜单「召唤怪兽吃掉」(文件/文件夹/桌面背景 3 处),点击后怪兽走向文件 |
| 拖拽回收 | 把文件拖到怪兽身上 → 就地确认 → 送回收站 |
| 确认对话框 | 显示文件名,再决定「是的 / 不是」,避免误删 |
| 回收站(可还原) | 用 SHFileOperationW + FOF_ALLOWUNDO,文件进回收站而非永久删除 |
| 单实例 | CreateMutexW 保证只跑一个;二次召唤通过 IPC 文件传给已运行实例 |
| 托盘 | 系统托盘图标,可显示/隐藏、退出 |
| 对话气泡 | 吃前/吃后冒粉色气泡(如「嗝~ 真好吃!」) |
⚠️ 关键陷阱(已修好,记录在代码内)
| 坑 | 现象 | 解决 |
|---|---|---|
| 右键菜单需管理员 | HKCR 非管理员静默失败 |
改用 HKCU\Software\Classes(免管理员) |
| 64 位 ctypes 崩溃 | HWND 被 32 位截断,钩子段错误 | 显式声明 WindowFromPoint/SetWindowsHookExW 等 argtypes |
| 回收变永久删除 | 用户无法找回 | FOF_ALLOWUNDO 送回收站 |
| pythonw 吞报错 | 静默退出难排查 | faulthandler + sys.excepthook 写日志到临时目录 |
🔧 自定义参数速查(monster_pet.py)
screen.height() - 250 # 初始位置:屏幕左下角,可改
State.WALK_TO_TARGET 速度 # self._walk_speed = 5(像素/帧)
确认超时 # CONFIRM 状态 30s 自动取消
📋 给评委/复用者说明
- 本 skill 为 Windows 专属(校园机房/个人电脑通用)。
- 资源与代码全部内联在
assets/与本目录,可直接打包上传。 - 卸载右键菜单:删除
HKCU\Software\Classes\*\shell\召唤怪兽吃掉等 3 处键即可。