我编写了一个 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 语句一样。