Explorer & AutoHotkey 有哪些好用的技巧?

AutoHotkey 操作系统文件管理器一直有各种各样的问题
比如用脚本调整窗口大小,这个大小不会被记住,下次打开仍旧是以前的大小,但用鼠标调整的大小就会被记住
比如用 com 接口获取选择的文件是很容易,但当管理器正在复制大文件时,获取就会失效

我物色第三方管理器,首选考虑的是,是否有接口快速获取已选文件和鼠标下的文件。
实现起来真是一言难尽,号称超高自定义的TC,我研究了几天,还加了Q群,最后也没找到实现的方法。现在还能想起群里老哥的话,用剪贴板复制获取已选文件还不够快吗?

有什么好用的技巧分享下呗

Directory Opus:

获取选中文件很简单,命令行就可以:dopusrt.exe /info %temp%\filelist.txt,listsel,0,也可以用内置的命令和 JScript 脚本来实现。不过获取鼠标下的文件有点困难,你具体是要实现什么功能?

剪贴板方法至少比命令行方法快3、4倍,用命令行就有点过分了
我主要是想实现最快的预览,预览一个图片文件,从读取文件到在GUI显示出来,通常200毫秒,剪贴板获取文件就需要50毫秒。我希望的是最大500微秒,这只有管理器提供指定的接口才能实现。
获取鼠标下的文件,当然也是获取后预览

DirectoryOpus是开源的吗?我记得是收费软件啊,还比较贵的那种

我这里测试写出只需要 7ms,加上读取也不至于到 200ms。

不清楚你的剪切板获取是怎么实现的,如果是用 SendMessage 的话不太应该要花 50ms,SendInput 或者 PostMessage 要进消息队列,延时高点很正常,但 SendMessage 本身的开销很低,只是切换下进程,调用窗口过程再返回,只有剪切板相关的 API 有可能会阻塞一会,但也不至于这么久。

DOpus 可以用 SendMessage 执行命令,借助 COM 也可以调用 DLL,理论上可以在第三方 SendMessage 后,用管道或者共享内存来获取选中的文件,避开所有文件 IO 和剪切板操作,不过这不一定真能降低多大延时。

1 个赞

收费,国内版比 TC 便宜,不过是大版本买断制。