Autohotkey 自动热键不阻止输入

Autohotkey 自动热键不阻止输入,autohotkey,Autohotkey,我正在构建一个脚本,用于侦听特定的热键,在接收到该热键后,应该捕获并重定向任何输入,直到终止到OBS,这样我就可以执行场景和源更改,而无需将OBS作为活动和焦点应用程序 脚本在这方面工作得很好,只是它不会阻止将输入发送到活动应用程序。当它不应该这样做时,它仍然将我的输入发送到活动应用程序。文档中说,当输入命令处于活动状态时,它应该阻止并捕获输入 故障排除方法(没有有效的方法): 尝试在没有修改键的情况下使用匹配列表的变体(即仅使用“e、C、M”) 试图使用InputHook()并显式设置Inp

我正在构建一个脚本,用于侦听特定的热键,在接收到该热键后,应该捕获并重定向任何输入,直到终止到OBS,这样我就可以执行场景和源更改,而无需将OBS作为活动和焦点应用程序

脚本在这方面工作得很好,只是它不会阻止将输入发送到活动应用程序。当它不应该这样做时,它仍然将我的输入发送到活动应用程序。文档中说,当输入命令处于活动状态时,它应该阻止并捕获输入

故障排除方法(没有有效的方法):

  • 尝试在没有修改键的情况下使用匹配列表的变体(即仅使用
    “e、C、M”
  • 试图使用
    InputHook()
    并显式设置
    InputHook.KeyOpt(“{All}”,“-V”)
  • 试图以管理员身份运行脚本(虽然没有文档记录,
    BlockInput
    命令显然需要此命令;我认为它可能类似于
    Input
    InputHook()
我在Windows7Ultimate上使用的是AHKv1.1.32.00

有关剧本:

SetTitleMatchMode, RegEx

^#S::
Input, OBSKeys, * T10, {Esc}, ^E,^C,^M
Switch OBSKeys
{
    case "^E": ControlSend, , ^E, ^OBS \d+\.\d+\.\d+
    case "^C": ControlSend, , ^C, ^OBS \d+\.\d+\.\d+
    case "^M": ControlSend, , ^M, ^OBS \d+\.\d+\.\d+
}
return

如果您的活动应用程序接收到直接输入,它将不会被阻止,除非您在较低级别截获输入。您正在尝试的活动应用程序是什么?如果你试着用记事本怎么办?应该像预期的那样工作。另外,除非您确实想使用UPPERCASE字符,否则不要使用UPPERCASE字符。本例中的活动应用程序是Notepad++。我使用大写字母,因为我在OBS中配置的实际快捷键是ctrl+shift+letter和^{大写字母}看起来像是一个较短的速记。我可能是想比应用程序期望的更聪明吗?是的,你可以像那样使用它们,按住shift键就是它要做的(在正常情况下)。只是不确定这是否是目的。但是当
input
处于活动状态时,如果您的输入没有被使用,则只有当Notepad++以管理员身份运行而AHK脚本未运行时,才会发生这种情况。这是你的问题吗?据我所知,Notepad++不是以管理员身份运行的。无论AHK脚本是否以管理员身份运行,我都会遇到这个问题。我还没有用任何其他活动的应用程序测试过这个。我计划将Firefox或Audacity等应用程序置于OBS之上,这种行为让我担心,他们可能会在不应该收到我的输入时收到我的输入,并表现异常。