覆盖或禁用外部的热键

通过对注册表进行下面的修改, 您可以禁用除 Win+LWin+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  ; 即不进行操作, 这样让 Ctrl-P 在记事本中失效.
    Send "^p"
}

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

您可以尝试执行上面的每个例子: 把它们复制到新文本文件(例如 "Override.ahk"), 然后运行这个文件. 或者, 如果您的浏览器支持它, 您可以通过单击将鼠标悬停在代码块上时出现在代码块右上角的 按钮来下载它们中的任何一个作为脚本文件.