AutoHotKey: Wie kann ich mein Skript nur in einem bestimmten Programm ausführen lassen?

650
Myles

Ich habe ein AHK-Skript erstellt, das Videodateien in Avid Media Composer (Videobearbeitungssoftware) Metadaten hinzufügt. Dazu werden alle erforderlichen Untermenüs eingegeben und Mausklicks an Stellen auf dem Bildschirm gesendet, die eine mühsame Aufgabe erleichtern, wenn sie den ganzen Tag immer und immer wieder benötigt werden.

Ich möchte jedoch, dass das Skript nur in Avid Media Composer ausgeführt wird und nichts anderes. Es gibt andere Speichersysteme, die mit der Maschine verbunden sind, und ich möchte nicht, dass das Skript versehentlich in andere Dateien / Ordner verschoben wird, die wissen, was zu wichtigen Daten führt.

Ich habe es mit #IfWinActive versucht, aber ich bin nicht sehr erfahren und nicht sicher, warum ich es nicht schaffen kann.

Folgendes muss ich tun:

Wenn "Avid Media Composer" das aktive Fenster ist, führen Sie "My Code" aus. Wenn etwas anderes als Avid Media Composer das aktive Fenster ist, muss Msgbox "Avid Media Composer muss das aktive Fenster sein, um diese Aufgabe auszuführen".

-

Fenstertitel, Klasse und Prozess

Avid Media Composer Mojo DX  ahk_class Qt5QWindowIcon  ahk_exe AvidMediaComposer.exe 

-

Mein Code:

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 

Wie lautet der richtige Code für diese Befehlsfolge, um nur in Avid Media Composer selbst ausgeführt zu werden, und sonst nichts?

Vielen Dank für jede Hilfe im Voraus.

0

1 Antwort auf die Frage

1
harrymc

Sie sollten sich die folgenden Referenzen ansehen:

Nach Ihren Angaben sind folgende drei möglich:

SetTitleMatchMode, 2 #IfWinActive Avid Media Composer  #IfWinActive ahk_class Qt5QWindowIcon  #IfWinActive ahk_exe AvidMediaComposer 

Beispiel:

SetTitleMatchMode, 2 #IfWinActive Notepad F3:: MsgBox, IN return #IfWinNotActive Notepad F3:: MsgBox, OUT return 
Hallo, danke für deine Antwort. Ich werde es versuchen. Soll ich dies vor allem anderen ganz oben in mein Skript einfügen? Myles vor 6 Jahren 0
Ja. Sie können sogar fortlaufende '# IfWinActive'-Befehle im Skript enthalten, die sich jeweils auf das Folgende beziehen. harrymc vor 6 Jahren 1
Ich habe gerade einen Test ausprobiert, bei dem ich #IfWinActive Avid Media Composer geschrieben habe, gefolgt von darunter liegendem Code für Msgbox. This is Avid. Darunter schrieb ich auch #IfWinNotActive Avid Media Composer, gefolgt von Code darunter für Msgbox. Dies ist NICHT Avid. Wenn ich es jedoch ausführe, werden beide Meldungsfelder angezeigt, wenn ich den Hotkey drücke, unabhängig davon, ob ich innerhalb oder außerhalb der Avid Media Composer-Software bin Myles vor 6 Jahren 0
Egal, ich habe es herausgefunden. Das hat funktioniert. Führt ein paar weitere Tests durch und markiert als beantwortet, wenn alles gut ist. Myles vor 6 Jahren 0
Alles positiv bewertet + Frage beantwortet. Vielen Dank Myles vor 6 Jahren 0