在此howtogeek 帖子,有这样一个代码片段,使用 Backspace 键可以在 Windows 资源管理器中返回上一级文件夹:
#IfWinActive, ahk_class CabinetWClass
; Please run on Windows 7+
Backspace::
ControlGet renamestatus,Visible,,Edit1,A
ControlGetFocus focussed, A
if(renamestatus!=1 && (focussed=="DirectUIHWND3"||focussed==SysTreeView321))
{
MsgBox, Don't check this ; debug
SendInput !{Up}
}else{
tooltip, Back-delete a char
Send {Backspace} ; Why does it not trigger another Backspace hotkey?
}
return
#IfWinActive
但我很困惑他为什么能写
Backspace::
代替
$Backspace::
根据文档,当您在 Windows 7 资源管理器中重命名文件时,无 $ 情况会导致按下 Backspace 键无限触发更多 Backspace 键,但事实上并没有发生这种情况。有人可以帮忙解释一下吗?
在 Windows 7 上尝试使用 Autohotkey 1.1.13.01。
答案1
来自#UseHook
帮助主题:
热键将使用默认方法(如果可能则使用 RegisterHotkey();否则使用键盘挂钩)实现。
通常情况下,只要有可能,就会使用 Windows API 函数 RegisterHotkey() 来实现键盘热键。但是,在某些情况下,如果使用键盘钩子,热键的响应性可能会更好。
启用该指令相当于在每个受影响的热键定义中使用 $ 前缀。
因此,热键有两种注册方法,并且有多种方法可以设置为这两种注册方法之一。您可以通过将脚本作为#persistent
另一个持久脚本或作为另一个持久脚本的一部分运行,然后从托盘图标打开脚本窗口并选择 来查看使用哪种方法来注册热键View > Hotkeys and their methods (Ctrl+H)
。热键将在那里列出,其中k-hook
或reg
—— 帮助主题中上面描述的两个选项#UseHook
。
下列操作将导致k-hook
:
#UseHook
Backspace::
这还将导致键盘钩子:
$Backspace::
这还将导致键盘钩子:
#IfWinActive, ahk_class CabinetWClass
Backspace::
这将导致常规注册并reg
显示在热键列表下:
Backspace::
或者更一般地:
#IfWinActive
Backspace::
重要的区别在于最终结果,以及它是否被注册为键盘钩子。如果您想尝试无限重复的 Backspace,请删除或替换#IfWinActive, ahk_class CabinetWClass
并在 Explorer 窗口中按 Backspace。事情应该会变得疯狂一秒钟,然后您应该收到一条消息,提示您收到太多热键,您确定要继续吗?祝您玩得开心。
您可能感兴趣的另一个工具是将“向上”按钮图标添加回您的 Windows 7 文件夹……这个免费的实用程序做得很好,下载并运行安装程序后,您只需选择安装程序中 4 个可用选项中的 1 个即可。