windows的explorer极客版 —— Tablacus Explorer 分组多标签文件管理器

Tablacus 可能不是最好的文件管理器,但他一定是最好的explorer的替代品。建议平时临时打开文件夹就用原生 explorer 自带的,需要持久化标签页时,就用 Tablacus !

他和explorer用的是同一套技术。列表控件和自带文件管理器相差无几。外壳则基于ie或其他浏览器引擎。

外壳和扩展都是基于HTML/js/css写的。所以他也适合喜欢调整代码的极客使用。他有很多插件扩展,是原作者漫长时间处理用户issue积累的宝库,插件本身就是学习资料。

优点1:十分小巧

加上81个扩展,小于3MB。本体只有700KB。

优点2:高度可编程

  • tablacus 本体完全开源。
  • 外壳都是 html/css/js
  • 插件也是。插件就是学习资料。
  • 这种嵌入ie的都可以用 AHK 调用com接口,分析dom或者执行任意JScript脚本。
  • 据说可以更换浏览器引擎
  • 据说可以在wine上运行。

优点3:与 AHK 脚本通信,运行JScript

例如:AHK中获取当前的文件选择,并复制文件名到剪贴板:(同时支持 Tablacus 以及原生 explorer 文件管理器!)

python 复制代码
GroupAdd, texp_gp, ahk_exe TEd32.exe
GroupAdd, texp_gp, ahk_exe TEd64.exe
GroupAdd, texp_gp, ahk_exe explorer.exe

WBGet(hwnd, Svr:=1) {               ;// based on ComObjQuery docs
    msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
         IID1 := "{0002DF05-0000-0000-C000-000000000046}"	; IID_IWebBrowserApp
		 IID2 := "{332C4427-26CB-11D0-B483-00C04FD90119}"	; IID_IHTMLWindow2
   SendMessage msg, 0, 0, Internet Explorer_Server1, ahk_id %hwnd%
   if (ErrorLevel != "FAIL") {
      lResult:=ErrorLevel, VarSetCapacity(GUID,16,0)
      if DllCall("ole32\CLSIDFromString", "wstr","{332C4425-26CB-11D0-B483-00C04FD90119}", "ptr",&GUID) >= 0 {
         DllCall("oleacc\ObjectFromLresult", "ptr",lResult, "ptr",&GUID, "ptr",0, "ptr*",pdoc)
			return	ComObj(9,ComObjQuery(pwb:=ComObjQuery(pdoc,IID1,IID1),IID2,IID2),1)
				,	ObjRelease(pdoc), ObjRelease(pwb)
      }
   }
}


#IfWinActive, ahk_group texp_gp 
F1::
    hwnd := WinExist("A")
    window := WBGet(hWnd)
    IfWinActive ahk_exe explorer.exe 
    {
        Selection := Window.Document.SelectedItems
    } else {
        Selection := window.te.Ctrl(CTRL_FV).SelectedItems.Count
    }
    Path_to_Selection := ""
    for Items in Selection
        Path_to_Selection .= Items.path "`n"
    MsgBox % Path_to_Selection
    clipboard := Path_to_Selection
    ;消息("已复制" Selection.Count "项", "w500")
    return
return
#IfWinActive

和AHk增强explorer的方式如出一辙。这种基于ie的嵌入的可以这样调用:

js 复制代码
   IfWinActive ahk_exe explorer.exe  ; 如果是原生文件管理器!
   {
       Selection := Window.Document.SelectedItems
   } else { ; 否则就是 tabacus!
       Selection := >window.te.Ctrl(CTRL_FV).SelectedItems.Count
   }

其中 AHK,代码 window.te.Ctrl(CTRL_FV)

对应于Jscript,也也就是任意插件的 script.js 中te.Ctrl(CTRL_FV) 获取的就是当前的文件列表的视图控件(至于控件的方法属性,参考诸多插件即可。)。

其实,插件挂到window对象的function和变量都可以被 AHK 访问。sync.js 需要挂到 MainWindow 上面。script.js 直接挂到 window 即可。

还能直接获取返回值:(但是好像不能直接返回数组?)

js:

window.test = function(){return 1;}

ahk:

msgbox % window.test()

这种顺滑如丝跨语言调用,不知道甩Java几百条街,使得 AHK 像 python 一样成为一门极为好用的胶水语言 和强大的用户脚本引擎

相关推荐
至天7 小时前
Windows 10/11 终端(Windows Terminal)右键菜单缺失恢复方法
windows·终端·windows 11·windows 10·terminal·右键菜单·windowsterminal
光年像素8 小时前
WMIC(Windows Management Instrumentation Command-line)命令大全
windows
q***575012 小时前
Redis服务安装自启动(Windows版)
数据库·windows·redis
A-刘晨阳17 小时前
【Windows压力测试工具】 - 使用微软官方工具进行压测 cpu、内存
运维·windows·测试工具·压力测试·cpustres·testlimit
EQ-雪梨蛋花汤17 小时前
【工具】如何使用 Windows BAT 批处理脚本递归删除指定后缀文件(附:完整代码,复制可用)
windows
sleP4o17 小时前
Windows 11 24H2 配置WSL2 + Docker
windows·docker·容器
潘晓可17 小时前
WSL - 解决虚拟专用网络连接下无法访问网络的问题
windows
张较瘦_18 小时前
Windows Docker使用实战教程
windows·docker·容器
邮专薛之谦1 天前
Kotlin 全知识点复习+详细梳理
windows·kotlin·android studio·idea
自动化代码美学1 天前
【Python3.13】官网学习之控制流
开发语言·windows·python·学习