Die Schritte-Engine
Eine Aktion, deren Engine Schritte ist, ist eine TOML-Liste von [[steps]]-Tabellen statt Text.
Sie ruft dieselben integrierten Funktionen auf und folgt denselben Regeln für Werte und
Wahrheitswerte. Die Unterschiede:
-
Jeder Schritt hat eine eindeutige ganzzahlige
idund eineop:call(fn,args),set(localplus einvalueoder eincall = { fn, args }),if,goto,end,repeat/end_repeat,exit_repeat,else/end_if. -
Ein
ifspringt entweder per id (then_goto/else_goto) oder öffnet ohne diese einen Block, der mitend_ifgeschlossen wird. -
repeatnimmt genau eines vontimes,whileoderuntilan. -
Eine Bedingung ist genau eines der folgenden: ein Aufruf einer integrierten Funktion (
fn/args),value(Wahrheitswert) odercompare("==","!=","<","<=",">",">=") mitleft/right. Fügen Sienot = truehinzu, um sie umzukehren. -
Ein Zeichenfolgenargument, das mit
$beginnt, liest eine Variable ("$target"). Alles andere ist ein Literal, dessen Typ sein TOML-Typ ist, und dieser Typ muss genau zum Parameter passen, wie bei Skript. -
{ const = "VirtualKey.MediaPlayPause" }ist eine benannte Konstante, die beim Kompilieren der Schritte durch ihre Zahl ersetzt wird, wie bei Skript. Eine gewöhnliche Zeichenfolge mit derselben Schreibweise, etwa"VirtualKey.F5", bleibt Text. -
{ fn = "MouseGetCursorX" }, eine Tabelle, die nurfnenthält, ist das Ergebnis einer integrierten Funktion ohne Argumente. Sie ist überall zulässig, wo ein Wert steht:- in den
argseines Aufrufs:args = [{ fn = "WindowGetActive" }] - in
left/righteiner Bedingung:left = { fn = "ContextGetPointCount" }, right = 20 - im
valueeiner Bedingung:value = { fn = "EngineIsSafeMode" } - in
timeseinesrepeat:times = { fn = "FolderWatchGetCount" } - im
valueeinesset-Schritts:value = { fn = "UtilityGetTickCount" }
Sie nimmt keine
argsan. Für eine integrierte Funktion, die Argumente braucht, legen Sie ihr Ergebnis zuerst mitsetin einer Variablen ab und übergeben"$name". - in den
-
Es gibt keine Operatorausdrücke. Arithmetik und das Zusammensetzen von Zeichenfolgen erfordern eine Skript-Aktion.
[[steps]]
id = 1
op = "set"
local = "target"
call = { fn = "WindowGetActive", args = [] }
[[steps]]
id = 2
op = "if"
condition = { fn = "WindowContainsTitle", args = ["$target", "Notepad"] }
[[steps]]
id = 3
op = "call"
fn = "WindowMaximize"
args = ["$target"]
[[steps]]
id = 4
op = "end_if"