桌面乱是个老问题。我的习惯是把正在做的项目目录、常用素材文件夹直接扔桌面,时间一长就是一片图标,找个东西得从上往下扫。也试过把文件夹固定到资源管理器的快速访问,或者用各种启动器,但这类工具添加快捷方式基本都是一个一个来:打开设置、选路径、选图标、保存,想加二十个文件夹能折腾半小时。更烦的是分类——加完一堆图标堆在一起,跟桌面凌乱只是换了个地方。
最近用 yyzTools 的程序坞,发现它把这个流程反过来了:不用逐个添加,从资源管理器拖一个文件夹到程序坞上,整个文件夹自己变成一个分类。这篇文章说说怎么用,也把它背后的拖放实现拆开讲讲。
一、先认识一下程序坞
yyzTools 装好之后程序坞默认是开着的。鼠标移到屏幕顶部边缘,一条分类栏滑下来;鼠标离开自动收起,平时不占地方。结构很简单:
顶部分是分类按钮,默认 7 个:文件夹、常用工具、文件、开发工具、AI 工具、系统、快捷操作,一共 90 个内置入口(此电脑、桌面、下载、截图、录屏、翻译、OCR、各种批量处理都在里面)
点开一个分类,下面弹出 3 列网格,窗口高度跟着条目数自动伸缩
每个条目分三种:应用(点一下启动)、文件/文件夹(点一下用默认程序或资源管理器打开)、网址(丢给默认浏览器)
平时当启动器用已经够舒服了,但这只是"读";真正省事的是"写"——往里面拖东西。
二、拖一个文件夹,得到一个分类
这是我现在最常用的动作:资源管理器里选中项目文件夹,按住左键往屏幕顶边拖(程序坞会延时弹出来,防止拖窗口经过顶部时误触),松手。
接下来发生这些事:
分类栏多了一个新分类,名字就是文件夹名
文件夹里的一级内容自动收进这个分类:子文件夹排在前面,文件排在后面,最多 30 个,超出的部分截断并在提示里说明
每个条目的图标直接取系统图标,跟着配置存到本地,不是每次打开临时抓
松手的位置决定这个分类插在第几位;建完自动切到新分类,马上就能用
一次拖多个文件夹也行,每个文件夹各建一个分类。分类栏只认文件夹,不小心拖了文件上去会跳过并计数提示。
反过来,往内容网格里拖就是加条目:选中一个文件或者文件夹,拖到某个分类的内容区,按松手位置换算成 3 列网格里的槽位,插到当前分类的对应位置。文件点一下用默认程序打开,文件夹点一下开资源管理器。
这两条路径覆盖了我绝大部分场景:常用文件夹整体上坞(拖文件夹),散落的文件临时加进去(拖文件)。
三、拖进去之后的管理
坞里的条目不是死的,有几套操作:
长按某个条目 800ms,进入抖动删除模式,点叉移除——和手机桌面一个逻辑
直接拖到垃圾桶图标上也能删
按住拖动可以排序;拖着悬停到别的分类按钮上,会临时切换到那个分类,松手就落在那儿,跨分类移动不用进设置
右键条目有几个选项:在文件夹里搜索(直接以
f path:文件夹路径唤起文件搜索并限定范围)、打开文件所在位置、管理员身份运行
拖拽建项是 v1.0.7.1700(9 月 8 日)加的,跨分类移动和一键整理桌面是 v1.1.0.2000(9 月 25 日)跟上的,到现在这几个版本用下来没出过问题。
四、拆解:拖放是怎么接进来的
WebView2 的窗口模式没有"接收拖入文件"的官方 API,程序坞的做法是自己实现 IDropTarget 注册到父窗口,从 CF_HDROP 里取绝对路径。真正麻烦的是同一个窗口要同时伺候两种拖放:
页内拖动:HTML5 的 draggable,用来排序、跨分类、拖垃圾桶
系统拖放:从资源管理器拖文件进来
两种拖动走同一套窗口消息,无脑注册会把页内拖动一起拦掉。程序坞的解法是动态抢注:全局左键钩子监听到按下时先判断落点——按下在窗口内,本次只可能是页内拖动,撤销注册让 Chromium 自己接管;按下在窗口外,才是外部文件拖放,这时才 RegisterDragDrop,并且顺手把 WebView 的子窗口一起枚举注册,防止消息漏到子窗口。
这里有个坑值得记:低级鼠标钩子的松键回调先于 OLE 的 Drop 派发,如果在松键时立刻撤销注册,文件拖放会在最后一刻落空。所以松键后延迟 150ms 才撤销,一个定时器的距离,Drop 正好在同一个消息循环里跑完。
建项本身也刻意放在原生侧做,不走 JS:列目录、截断、构造条目(id、categoryId、type、folderPath、name、order)、提取系统图标转 base64、按落点换算插入序号,全部在 C++ 里完成,直接写 dock 配置;配置变更经回调通知前端 reload,条目数变化再触发一次窗口高度重算。前端只负责渲染和弹提示。这样做的好处是拖放建项不依赖页面状态——页面还在加载中拖进来也能正确落盘。
图标那步也有细节:提取失败的条目不写 icon 字段,交给前端兜底显示默认图标,不会因为一个图标提取失败让整次拖放失败。
五、顺手治桌面乱:一键整理桌面
v1.1.0 还给程序坞加了一键整理桌面,在程序坞空白处右键就能看到。点一下:
扫桌面第一层内容(隐藏和系统项跳过),按扩展名自动分类:软件、文档、图片、视频、音频、压缩包,剩下的并成一类
每个分类最多放 21 项(3 列 × 7 行的单页容量),装不下的溢出到还有空位的整理分类,尽量单层平铺——子目录在程序坞里要多点一层,失去快捷启动的意义
移动全部走同卷 rename,只移动不删除;整理完弹窗告知结果,附就地撤销入口
重复整理是幂等的:桶的路径记在配置里,第二次整理往现有桶里合并,不会建出一堆"桌面整理 2"
桌面清空了,东西也没丢,都在程序坞里躺着,点一下就能开。对我这种桌面常年堆项目目录的人,这个比手动拖还省事——手动拖还得想怎么分类。
六、关于 yyzTools
可能有人第一次听说:yyzTools 是 Windows 10/11 64 位的桌面效率工具集,永久免费、不用注册。目前内置 44 项功能、388 个命令模块,界面支持 12 种语言。剪贴板、文件搜索、OCR 都在本地处理,数据不上传。安装包 176 MB 左右。
除程序坞外常用的还有:命令面板(双击 Ctrl 呼出,f搜文件、c翻剪贴板、p管进程)、超级翻译(可以接自定义 LLM,之前写过配置方法)、空格预览、鼠标手势、录屏和长截图。官网在搜索引擎里搜"yyzTools"就能找到,GitHub 上也有公开仓库,部分组件以 MIT 开源。
总结
拖文件夹建分类这个功能,说到底是把"添加"的成本降到了接近零:选中、拖过去、松手,三步。启动器类工具的体验差距,往往就在这些动作的成本上。如果你也烦透了逐个添加快捷方式,或者桌面已经乱到影响找东西,可以装一个试试程序坞;不想装全套也可以先去官网看看截图和功能列表,是不是覆盖你的日常场景。