AutoHotKey: Jak uruchomić mój skrypt tylko w określonym programie?

1

Stworzyłem skrypt AHK, który dodaje metadane do klipów wideo w programie Avid Media Composer (oprogramowanie do edycji wideo). Robi to, wchodząc we wszystkie niezbędne podmenu i wysyłając kliknięcia myszą do miejsc na ekranie, które ułatwiają żmudne zadanie, gdy trzeba to robić przez cały dzień.

Chcę jednak, aby skrypt działał tylko w programie Avid Media Composer i nic więcej. Istnieją inne systemy pamięci masowej podłączone do maszyny i nie chciałbym, aby skrypt przechodził do innych plików / folderów przez przypadek, kto wie, co do ważnych danych.

Próbowałem użyć #IfWinActive, ale nie mam dużego doświadczenia i nie jestem pewien, dlaczego nie mogę go uruchomić.

Oto, co muszę zrobić:

Jeśli aktywne jest okno „Avid Media Composer”, uruchom „Mój kod”. Jeśli aktywne jest okno inne niż Avid Media Composer, Msgbox „Avid Media Composer musi być aktywnym oknem, aby uruchomić to zadanie”.

-

Tytuł okna, klasa i proces

Avid Media Composer Mojo DX

ahk_class Qt5QWindowIcon

ahk_exe AvidMediaComposer.exe

-

Mój kod:

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

Jaki kod jest prawidłowy, aby ta seria poleceń działała tylko w samym Avid Media Composer i nic poza tym?

Wielkie dzięki za wszelką pomoc z góry.

Myles
źródło

Odpowiedzi:

3

Powinieneś spojrzeć na następujące referencje:

Według twoich informacji możliwe są wszystkie trzy następujące elementy:

SetTitleMatchMode, 2
#IfWinActive Avid Media Composer

#IfWinActive ahk_class Qt5QWindowIcon

#IfWinActive ahk_exe AvidMediaComposer

Przykład:

SetTitleMatchMode, 2
#IfWinActive Notepad
F3:: MsgBox, IN
return
#IfWinNotActive Notepad
F3:: MsgBox, OUT
return
harrymc
źródło
Cześć, dzięki za odpowiedź. spróbuję. Czy powinienem po prostu dodać to na początku mojego skryptu, zanim wszystko inne?
Myles,
1
Tak. Możesz nawet mieć #IfWinActivew skrypcie kolejne polecenia, każde odnoszące się do tego, co następuje po nim.
harrymc
Właśnie wypróbowałem test, w którym napisałem #IfWinActive Avid Media Composer, a następnie kod pod nim dla Msgbox, This is Avid. Następnie napisałem #IfWinNotActive Avid Media Composer, a następnie kod pod Msgbox, NIE jest to Avid. Jednak gdy go uruchomię, po naciśnięciu klawisza skrótu pojawiają się oba okna komunikatów, niezależnie od tego, czy jestem w programie Avid Media Composer, czy poza nim
Myles,
nieważne, wymyśliłem to. To zadziałało. Wykonam jeszcze kilka testów i oznaczy jako odpowiedź, jeśli wszystko jest w porządku.
Myles
Wszystko poddane ocenie + odpowiedź na pytanie. Dzięki
Myles,