Autohotkey,为什么这个 Windows 资源管理器 Backspace 热键不会自行触发,即使没有 $ 前缀

Autohotkey,为什么这个 Windows 资源管理器 Backspace 热键不会自行触发,即使没有 $ 前缀

在此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-hookreg—— 帮助主题中上面描述的两个选项#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 个即可。

相关内容