AutoHotKey: Как сделать так, чтобы мой скрипт запускался только внутри определенной программы?

540
Myles

Я создал скрипт AHK, который добавляет метаданные к видеоклипам в Avid Media Composer (программное обеспечение для редактирования видео). Он делает это путем входа во все необходимые подменю и посылает щелчки мышью в те места на экране, которые облегчают трудоемкую задачу, когда нужно делать это снова и снова в течение всего дня.

Тем не менее, я хочу, чтобы скрипт запускался только в Avid Media Composer и больше ничего. Есть другие системы хранения, подключенные к машине, и я бы не хотел, чтобы скрипт случайно вошел в другие файлы / папки, кто знает, что делать с важными данными.

Я пытался использовать #IfWinActive, но я не очень опытен и не уверен, почему я не могу заставить его работать.

Вот что мне нужно сделать:

Если активным окном является «Avid Media Composer», запустите «Мой код». Если активным окном является что-либо, кроме 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,  Sleep, 20 Send,  Sleep, 200 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 100 MouseClick, Left, 107, 30 Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 20 Send,  Sleep, 100 MouseClick, Left, 346, 38 Sleep, 200 Send, ^v Sleep, 200 Send,  Sleep, 200 Send,  Sleep, 200 MouseClick, Left, 91, 102 Sleep, 100 MouseClick, Left, 92, 100 Sleep, 100 MouseClick, Left, 143, 154 Sleep, 100 Send,  BlockInput, MouseMoveoff Hotkey, LButton, DummyLabel, Off Hotkey, RButton, DummyLabel, Off Hotkey, MButton, DummyLabel, Off  } return  DummyLabel: return 

Какой правильный код для этой серии команд должен выполняться только внутри самого Avid Media Composer и ничего больше?

Большое спасибо за любую помощь заранее.

0

1 ответ на вопрос

1
harrymc

Вы должны взглянуть на следующие ссылки:

Согласно вашей информации возможны следующие три:

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 
Привет, спасибо за ваш ответ. Я попробую. Должен ли я просто добавить это в начало моего сценария, прежде чем все остальное? Myles 5 лет назад 0
Да. Вы даже можете иметь последовательные команды `# IfWinActive` в скрипте, каждая из которых относится к тому, что следует за ним. harrymc 5 лет назад 1
Я только что попробовал тест, в котором я написал #IfWinActive Avid Media Composer, а затем код под Msgbox, это Avid. Затем ниже я также написал #IfWinNotActive Avid Media Composer, за которым следует код для Msgbox, это НЕ Avid. Однако, когда я запускаю его, при нажатии горячей клавиши появляются оба окна сообщений, независимо от того, нахожусь ли я в программном обеспечении Avid Media Composer или за его пределами. Myles 5 лет назад 0
не бери в голову, я понял это. Это сработало. Проведите еще несколько тестов и отметьте, что ответили, если все хорошо. Myles 5 лет назад 0
Все проголосовало + Вопрос ответил. Спасибо Myles 5 лет назад 0

Похожие вопросы