应用程序启动后使用 AutoHotKey 禁用 ALT 功能

应用程序启动后使用 AutoHotKey 禁用 ALT 功能

我正在寻找一种方法来禁用alt准备与键盘一起使用的助记键菜单的功能,等待按下字母,但显然,Windows 本身无法做到这一点,至少 Windows 7 无法做到这一点(我不知道其他的)。

问题在于Adobe Premiere其中,它alt用于放大和缩小时间线/序列,我经常这样做,因为我进行逐帧口型同步。

问题是,当我释放alt键时,有时,其与菜单相关的功能仍然存在,并且立即使用箭头键移动...光标?在时间线/序列中,而不是浏览视频帧,而是浏览菜单。

虽然很烦人,但通过在停止上下滚动鼠标滚轮后立即再次按下alt,我可以保持连续的工作流程。这只有一毫秒,但可以推断出一个非常耗时的任务,2-3 分钟可能需要 2-3 小时才能完成。

无论如何...在寻找替代方法时,我发现某人有同样的问题,但Adobe Photoshop还有人建议使用一款名为助理遗憾的是它仅适用于 Photoshop,但也有 AutoHotKey 解决方案。

我一直试图避免使用 AHK,因为我不喜欢在后台运行程序,而且在这种情况下,考虑到我没有顶级硬件配置,每一点内存和/或处理能力都至关重要。上次我的电脑因为项目的复杂性而停止工作了好几次,Premiere 消耗了超过 7GB 的 RAM。

但我尝试了一下,结合了原来的建议:

#NoEnv
; #Warn  ;
~LAlt::
KeyWait, LAlt
return

~LAlt Up::
Send, {LAlt Up}
return

我确信这有效,因为我在 Windows 资源管理器窗口中进行了测试,尽管菜单闪烁,但它并没有触发。

通过一种方法来触发 Premiere -AND- 一起运行脚本:

#NoEnv
; #Warn  ;#Persistent   ;Script will not Exit when no hotkeys exist.

Run, "C:\Program Files\Adobe\Adobe Premiere Pro CC 2017\Adobe Premiere Pro.exe"

SetTitleMatchMode, 2   ;Program Title can be portions of the title instead of the full title
SetTimer, CheckPrograms, 1000   ;Run CheckPrograms subroutine every 1 second
return

CheckPrograms:
IfWinExist, Premiere
{
    Run, DisableALTFunctionality.ahk
    ;PremiereTrack = 1
}
IfWinNotExist, Premiere
    ;PremiereTrack = 0
    Exitapp
return

但据我所知,这不起作用,因为当 Premiere 最终加载时(这里还没有 SSD)我打开了我的最后一个项目,而 ALT 功能仍然存在。

我正在通过桌面上的快捷方式运行第二个脚本,两个脚本都在同一个目录中,并且 AHK 文件已正确配置为手动与 AutoHotScript x64 一起运行(便携版)——托盘图标显示正在运行的脚本确实是DisableALTFunctionality.ahk

但即使将超时时间增加到 5 分钟左右,我也没有成功。

答案1

您可以使用#如果- 或者#IfWinActive- 指令禁用此程序中的 ALT 功能:

#NoEnv
; #Warn  ;#Persistent  ; Script will not Exit when no hotkeys exist.

SetTitleMatchMode, 2   ; Program Title can be portions of the title instead of the full

#IfWinActive, Premiere

    LAlt::
    RAlt:: return     ; do nothing

    !WheelDown:: Send, {Alt Down}{WheelDown}{Alt Up}    ; ! means Alt

    !WheelUp:: Send, {Alt Down}{WheelUp}{Alt Up}


#IfWinActive          ; turn off context sensitivity

也可以尝试:

#NoEnv
; #Warn  ;#Persistent  ; Script will not Exit when no hotkeys exist.

SetTitleMatchMode, 2   ; Program Title can be portions of the title instead of the full

#IfWinActive, Premiere

    LAlt up::
    If (A_PriorKey = "LAlt") ;  If LAlt was pressed alone
        return ; do nothing
    return

    ; In this case its necessary to define a custom combination by using "LAlt &" or "<!" 
    ; to avoid that LAlt loses its original function as a modifier key:
    <!F4:: Send {Alt Down}{F4}{Alt Up} ; <! means LAlt


#IfWinActive          ; turn off context sensitivity

相关内容