ahk脚本:中键点击返回上级目录,适用TC/FC/资源管理器


簡睿发表了一篇ahk文章,介绍在档案总管(资源管理器)或FreeCommander中,按鼠标中键(滚轮),实现返回上级目录的功能。现做转载,并修改其ahk代码,目前支持TC(Total Commander)、FC(FreeCommander)、资源管理器,适用于 WindowsXP – Win7。

提醒:①脚本需要安装AutoHotkey才能运行;②脚本会导致这些程序中鼠标中键的其他功能失效(比如mymutou提到“TC鼠标中键关闭标签功能失效”。 所以本脚本仅供参考和特殊情况下使用。

ahk脚本:中键点击返回上级目录

簡睿原文

不論在檔案總管或FreeCommander裡,切換到上層目錄的按鍵不同,為了更方便的快速切換到上層資料夾,我使用了AutoHotkey將按滑鼠滾輪(滑鼠中鈕)變成切換的按鈕,這樣手不用離開滑鼠就能切換目錄:

用WinGetClass將目前視窗的類別存入變數sClass,當類別是”TFcFormMain”(即FreeCommander的視窗類別)則送出FreeCommander切到上層的退倒鍵{BS},當類別是”CabinetWClass”(即檔案總管的視窗類別)則送出檔案總管切換到上層的〔Alt+Up〕。

Autohotkey安裝資料夾裡的AU3_Spy.exe能找出開啟中視窗類別(參考:用AutoHotkey防止因按Esc鍵而不慎誤關視窗)。[via]

修改后的ahk代码

【功能】在TC(Total Commander)、FC(FreeCommander)、资源管理器 中,按鼠标中键(滚轮),返回上级目录。

【原理】其实这个脚本的核心就一句“收到中键,发出backspace或Alt+up”——因为这3个程序中,返回上级目录的热键都是backspace 或 Alt+up(Win7资源管理器)。

【点评】鼠标中键比backspace键更“快捷”吗?这主要看用户的当下状态:如果双手在键盘上,当然用backspace键;如果正用鼠标浏览文件,当然中键更方便。

$MButton::
WinGetClass,sClass,A
if (sClass=”TFcFormMain” or sClass=”TTOTAL_CMD” or sClass=”ExploreWClass”)
Send, {BS}
else if (sClass=”CabinetWClass” || sClass=”#32770″)
Send, !{up}
else sendplay {MButton}
return

3层金字塔模型:我的ahk使用和学习体系

声明:我从来就不是ahk高手,只是现用现学而已。并且,我不关心ahk的技术细节和深入功能,纯属“实用主义”——这与amnesiac更积极的研究、推广思路是不同的。两种方式无对错优劣,视个人精力与风格。

我使用和学习(没错,先使用,后学习)AutoHotkey 的经验,或者推广到任何软件,甚至任何工具,可以用一个3层金字塔模型来表现。

第一层:自己编写且在用的脚本。
* 仅在必须且可能的情况下,才自己编写(或录制)脚本。如果手工工作量不太,不一定用脚本。如果脚本太复杂,估计查文档、调脚本所需时间过多,也不用脚本。
* 多数情况下,这类脚本极简单,比如只涉及键盘和鼠标输入、热键定义等命令。
* 有些脚本极简单、无技术含量、不通用、但极有效。比如现在注册weibo,会强行关注几十个人。我就录了一个脚本,模拟点击,来取消默认关注。

第二层:别人编写的脚本。
* 多看别人的脚本,是高效而有趣的学习方式。
* 有的脚本可直接使用。
* 有的脚本可修改后使用。
* 有的脚本会让你学到新思路或新命令,以备后用。

第三层:官方技术文档。
* 帮助文档、官网、作者在论坛的讨论与回复……
* 能够整体理解 AutoHotkey,知道 ahk 能做什么不能做什么,擅长做什么不擅长做什么,一切心中有数。

这3层,从塔尖到塔基,从脚本数量看,越来越多;而从实际使用看,则距离越来越远;再从知识或应用可能性来看,则起来越根本,越来越变化无穷。各层之间,具体是何比例?这要因人而异,因事而异,因时而异。模型大处是哲学,落到细节便是艺术,都难以量化。如果纯从主观判断,答案仍旧是那句话“心安之处,便是吾乡”。


《“ahk脚本:中键点击返回上级目录,适用TC/FC/资源管理器”》 有 24 条评论

  1. 不知道这里的上级目录目录是怎么定义的,但假定是父目录的话,这段脚本就不适用与Win7的资源管理器。在XP资源管理器里按BackSpace的话是返回父目录,但在Win7里却是返回上一打开文件夹。在Win7资源管理器里要发送Alt + ↑才是返回父目录。

    xbeta注:多谢提醒,我还没有用过win7。代码已经更新,可能兼容win7

  2. 你好,我有一个疑问,为什么使用ahk而不是python之类的脚本语言?ahk的优势在哪?

    xbeta注:作为一个不懂开发的人,ahk对我很简单。并且我也相信,对快捷操作,ahk这样的脚本语言可能更方便

  3. 请问这个功能如何用在TC上啊?下载链接在哪里?

    $MButton::
    WinGetClass,sClass,A
    if (sClass=”TFcFormMain” or sClass=”TTOTAL_CMD” or sClass=”ExploreWClass”)
    Send, {BS}
    else if (sClass=”CabinetWClass” || sClass=”#32770″)
    Send, !{up}
    else sendplay {MButton}
    return

    这段代码如何导入到TC里面?

  4. 楼上,不是导入TC,这是ahk脚本。将这段代码复制到记事本,然后另存为MButton4TC.ahk,另存的时候文件编码改为UTF-8,勾选BOM;然后你需要下一个ahk.exe解释器(http://www.autohotkey.net/~Lexikos/AutoHotkey_L/),MButton.ahk文件关联ahk.exe,双击运行,它会出现在托盘,然后就可以双击中键看到效果了。

  5. 对于推广:
    博主和我的方式, 以及其他 AutoHotkey 爱好者的方式, 特点上可能各有千秋, 在不同层面相互补充, 所以效果相得益彰.

    对于分享:
    如果您有这样简洁实用的脚本, 欢迎到中文论坛分享: [url=http://ahk.5d6d.com/forum-9-1.html]脚本展示版块[/url]

  6. 在TE中我习惯的中键关闭标签失效了,有点麻烦呢,破坏了软件常用操作的一致性。

    另外,这个功能是对当前激活窗口操作的,于是TE下就有这样的问题:

    激活左窗口时在右窗口点中键,左窗口返回上级。

    作为鼠标操作这种视觉型操作来说,我觉得这不是一个合理的现象。一来被操作与鼠标的视觉位置丢失关联性,容易导致操作误解;二来TE激活窗口的亮显并不十分凸显,操作时会有一定的迷惑性;第三,在一个激活的主窗口下工作时,若要将对侧窗口返回上层,还需先激活对侧窗口,再点中键,再回激活主窗口,多点几次鼠标,降低操作连贯性(这种操作我确实经常会用到,现在的操作方式是点对侧窗口的上层按钮,再回来激活主窗口)。

    似乎判断鼠标位置,中键时鼠标悬停在窗口内部(和地址栏上)时才执行向上一层,这样会比较合理。——这样编写复杂度就增加了啊……

  7. 请问善用佳软,Totalcommader可不可以从list插件里面出来的时候选中落在最后看的文件上?TC有没有什么可以支持压缩文件格式的图片list插件?正在用imagine,但是不支持压缩文件里面的多个目录。

  8. 站长的代码挺不错,但是不能用于CAD,所以修改了下,完美用于CAD制图,看看站长还有什么好建议么?

    ;中键达到后退的效果 不影响CAD中键平移
    $MButton::
    MouseGetPos, CoordX, CoordY
    WinGetClass,sClass,A
    if (sClass=”TFcFormMain” or sClass=”TTOTAL_CMD” or sClass=”ExploreWClass”)
    Send, {BS}
    else if (sClass=”CabinetWClass” || sClass=”#32770″)
    Send, !{up}
    else
    SendInput, {MButton Down}
    CoordXRec := CoordX, CoordYRec := CoordY
    return
    ~$MButton UP::return

回复 站长工具 取消回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据