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

相关推荐
码农水水4 小时前
中国邮政Java面试:热点Key的探测和本地缓存方案
java·开发语言·windows·缓存·面试·职场和发展·kafka
沫离痕6 小时前
windows安装docker实例
windows·docker·容器
桌面运维家7 小时前
vDisk VOI架构IO瓶颈怎么办?Windows优化实战
windows·架构
非凡ghost9 小时前
MPC-QT视频播放器(基于Qt框架播放器)
开发语言·windows·qt·音视频·软件需求
ysy16480672399 小时前
Docker安装(Windows版)
windows·docker·容器
珂玥c12 小时前
windows系统nfs挂载
运维·windows·ssh·remmina·cygwin
wok15712 小时前
Windows 上使用 Docker Desktop 教程
windows·docker·容器
希赛网13 小时前
网工备考,华为ENSP基础配置命令(下)
windows·计算机网络·网络工程师·华为认证·ensp·路由交换·网工备考
马踏岛国赏樱花13 小时前
Windows与Ubuntu双系统,挂载D/E盘到Ubuntu下时只能读的问题
linux·windows·ubuntu
ulias21213 小时前
AVL树的实现
开发语言·数据结构·c++·windows