# 覆盖或禁用热键

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

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

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

其他程序中定义的热键可以被指定到脚本中的动作来轻松地进行覆盖或禁用. 此特性常用来改变 Windows 内置的热键. 例如, 如果您想用 `Win`+`E`(启动 Windows Explorer 的快捷键) 执行其他的动作, 请使用这个:

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

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

    #r::return

同样地, 要禁用两个 `Win`, 请使用这个:

    LWin::return
    RWin::return

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

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

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

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

dftg