AutoHotKey:如何使我的脚本仅在特定程序内运行?

AutoHotKey:如何使我的脚本仅在特定程序内运行?

我编写了一个 AHK 脚本,用于在 Avid Media Composer(视频编辑软件)中向视频剪辑添加元数据。它通过进入所有必要的子菜单并将鼠标点击发送到屏幕上的位置来实现这一点,这使得需要整天反复执行的繁重任务变得轻松。

但是,我希望脚本只在 Avid Media Composer 中运行,不在其他任何地方运行。机器上还连接着其他存储系统,我不希望脚本意外进入其他文件/文件夹,对重要数据造成谁知道什么后果。

我尝试使用#IfWinActive,但我经验不足,并且不确定为什么我无法让它工作。

这是我需要做的:

如果“Avid Media Composer”是活动窗口,则运行“My Code”。如果除 Avid Media Composer 之外的其他窗口是活动窗口,则 Msgbox“Avid Media Composer 必须是活动窗口才能运行此任务”。

-

窗口标题、类别和进程

Avid Media Composer Mojo DX

ahk_class Qt5QWindowIcon

ahk_exe AvidMediaComposer.exe

-

我的代码:

F3::

 {
    BlockInput, MouseMove
    Hotkey, LButton, DummyLabel, On
    Hotkey, RButton, DummyLabel, On
    Hotkey, MButton, DummyLabel, On
    Sleep, 20
    Send, {LAlt}
    Sleep, 20
    Send, {Right}
    Sleep, 200
    Send, {Right}
    Sleep, 20
    Send, {Right}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Right}
    Sleep, 20
    Send, {Enter}
    Sleep, 100
    MouseClick, Left, 107, 30
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Down}
    Sleep, 20
    Send, {Enter}
    Sleep, 100
    MouseClick, Left, 346, 38
    Sleep, 200
    Send, ^v
    Sleep, 200
    Send, {Enter}
    Sleep, 200
    Send, {Enter}
    Sleep, 200
    MouseClick, Left, 91, 102
    Sleep, 100
    MouseClick, Left, 92, 100
    Sleep, 100
    MouseClick, Left, 143, 154
    Sleep, 100
    Send, {Down}
    BlockInput, MouseMoveoff
    Hotkey, LButton, DummyLabel, Off
    Hotkey, RButton, DummyLabel, Off
    Hotkey, MButton, DummyLabel, Off

 }
return

DummyLabel:
return

这一系列命令的正确代码是什么,只能在 Avid Media Composer 内部运行,而不能在其他地方运行?

非常感谢您的帮助。

答案1

您应该看看以下参考资料:

根据您的信息,以下三种情况均有可能:

SetTitleMatchMode, 2
#IfWinActive Avid Media Composer

#IfWinActive ahk_class Qt5QWindowIcon

#IfWinActive ahk_exe AvidMediaComposer

例子 :

SetTitleMatchMode, 2
#IfWinActive Notepad
F3:: MsgBox, IN
return
#IfWinNotActive Notepad
F3:: MsgBox, OUT
return

答案2

如果发现唯一适合我的方法如下:

#If WinActive("ahk_exe Adobe Premiere Pro.exe")
...
#If

值得注意的是,您可以在窗口标题名称中放置空格‘ ’,即Adobe Premiere Pro.exe在 之后ahk_exe

值得牢记的一件事是,这必须放在你的键绑定周围(即some_key::),而不是代码中的其他地方,就像我一般假设的 if 语句一样。

相关内容