Aller au contenu principal

Le moteur Étapes

Une action dont le moteur est Étapes est une liste TOML de tables [[steps]] au lieu d'un texte. Elle appelle les mêmes fonctions intégrées et suit les mêmes règles de valeurs et de valeur de vérité. Les différences :

  • Chaque étape a un id entier unique et un op : call (fn, args), set (local plus une value, ou un call = { fn, args }), if, goto, end, repeat/end_repeat, exit_repeat, else/end_if.

  • Un if saute soit vers un id (then_goto/else_goto), soit, sans eux, ouvre un bloc fermé par end_if.

  • repeat prend exactement l'un de times, while ou until.

  • Une condition est exactement l'une des formes suivantes : un appel de fonction intégrée (fn/args), value (valeur de vérité), ou compare ("==", "!=", "<", "<=", ">", ">=") avec left/right. Ajoutez not = true pour l'inverser.

  • Un argument chaîne commençant par $ lit une variable ("$target"). Tout le reste est un littéral dont le type est son type TOML, et ce type doit correspondre exactement au paramètre, comme en Script.

  • { const = "VirtualKey.MediaPlayPause" } est une constante nommée, remplacée par son nombre à la compilation des étapes, comme en Script. Une simple chaîne écrite de la même façon, comme "VirtualKey.F5", reste du texte.

  • { fn = "MouseGetCursorX" }, une table qui ne contient que fn, est le résultat d'une fonction intégrée sans argument. Elle est acceptée partout où une valeur l'est :

    • dans les args d'un appel : args = [{ fn = "WindowGetActive" }]
    • dans left/right d'une condition : left = { fn = "ContextGetPointCount" }, right = 20
    • dans la value d'une condition : value = { fn = "EngineIsSafeMode" }
    • dans le times d'un repeat : times = { fn = "FolderWatchGetCount" }
    • dans la value d'une étape set : value = { fn = "UtilityGetTickCount" }

    Elle ne prend pas d'args. Pour une fonction intégrée qui attend des arguments, placez d'abord son résultat dans une variable avec set, puis passez "$name".

  • Il n'y a pas d'expressions avec opérateurs. L'arithmétique et la construction de chaînes nécessitent une action Script.

[[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"