# 覆盖或禁用热键

通过对注册表进行下面的修改, 您可以禁用除 `Win`+`L` 和 `Win`+`U` 外的其他所有内置的 Windows 热键(这种方法应该适用于所有操作系统, 但可能需要重启才生效):

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
    NoWinKeys REG_DWORD 0x00000001 (1)

但如果您想进一步设置而非仅仅禁用它们, 那么请继续阅读.

其他应用程序拥有的热键可以被覆盖或禁用, 只需将它们指定给脚本中的操作即可. 此特性常用来改变 Windows 内置的热键. 例如, 如果您想用 `Win`+`E`(启动资源管理器的快捷键) 执行其他的动作, 请使用这个:

    #e::MsgBox "This hotkey is now owned by the script."

在下面的例子中, 完全禁用打开运行对话框的 `Win`+`R` 热键:

    #r::return

类似的, 要禁用左右 `Win`, 请使用:

    LWin::return
    RWin::return

要禁用或改变一个应用程序的非全局热键(即仅对那个应用程序的窗口有效的快捷键), 请参考下面的例子, 其中禁用了仅适用于记事本的 `Ctrl`+`P`(打印), 而让它对其他所有窗口保持有效:

    $^p::
    {
        if WinActive("ahk_class Notepad")
            return  ; 即不进行操作, 这样让 Control-P 在记事本中失效.
        Send "^p"
    }

在上面的例子中, 必须使用 $ 前缀, 这样热键才可以 "发送自身" 而不触发它自己(否则会出现提示无限循环的警告对话框). 另请参阅: 上下文相关的热键.

您可以尝试执行上面的每个例子: 把它们复制到新文本文件(例如 "Override.ahk"), 然后运行这个文件.

dftg