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 一样成为一门极为好用的胶水语言 和强大的用户脚本引擎

相关推荐
mCell1 小时前
从删库到跑路?这50个Linux命令能保你职业生涯
linux·windows·macos
dualven_in_csdn2 小时前
electron 使用记录
windows
zz9602263 小时前
Windows Server存储池,虚拟磁盘在系统启动后不自动连接需要手动连接
windows
吳所畏惧9 小时前
NVM踩坑实录:配置了npm的阿里云cdn之后,下载nodejs老版本(如:12.18.4)时,报404异常,下载失败的问题解决
前端·windows·阿里云·npm·node.js·batch命令
leese2339 小时前
FreeMarker模板引擎
windows
love530love10 小时前
命令行创建 UV 环境及本地化实战演示—— 基于《Python 多版本与开发环境治理架构设计》的最佳实践
开发语言·人工智能·windows·python·conda·uv
呉師傅10 小时前
佳能iR-ADV C5560复印机如何扫描文件到电脑
运维·网络·windows·计算机外设·电脑
程序视点10 小时前
【最新专业评测】PDF Reducer专业版:85%超高压缩率的PDF压缩神器|Windows最佳PDF压缩工具推荐
windows
qyhua14 小时前
Windows 平台源码部署 Dify教程(不依赖 Docker)
人工智能·windows·python
女程序猿!!!15 小时前
网址收集总结
windows