Aller au contenu principal

Appeler des fonctions intégrées

  • Les arguments sont positionnels et tous sont obligatoires. Aucune fonction intégrée n'accepte d'arguments facultatifs, nommés ou en nombre variable. Les noms de paramètres de la référence ne sont que des étiquettes.
  • Le nombre d'arguments est vérifié à la compilation du script : un nombre incorrect arrête donc le script avant que quoi que ce soit ne s'exécute.
  • Les types des arguments sont vérifiés à l'exécution de l'appel, et ils doivent correspondre exactement, à un élargissement près. Un Integer passé là où un Real est déclaré devient ce Real (MathSqrt(16) fonctionne), comme en arithmétique. Un Real passé là où un Integer est déclaré, ou un nombre là où Text est déclaré (UtilityPrint(42)), arrête l'action avec Nom : l'argument N n'a pas le bon type. Les paramètres indiqués comme Any acceptent n'importe quel type.
  • Chaque fonction intégrée renvoie une valeur. La plupart des actions renvoient un Bool qui signifie « cela a-t-il fonctionné », que vous pouvez ignorer ou tester.
  • L'absence de quelque chose est un résultat normal, pas une erreur. Une fenêtre introuvable est un Window nul. Passer un Window nul, ou une fenêtre qui s'est fermée, à une fonction intégrée Window* ne fait rien et renvoie false, 0 ou "" : une chaîne d'appels de fenêtre sur un handle introuvable est donc sans risque. Les fonctions intégrées de contexte appelées en dehors de leur déclencheur renvoient "", 0, -1 ou un Window nul.
  • Les résultats multiples suivent le schéma énumérer puis indexer. Un appel comme WindowGetAllTopLevel(), FolderEnumerateAll(…), StringSplit(…) ou DisplayMonitorEnumeratedAll() renvoie un nombre, et la fonction …EnumeratedAt(i)/…PartAt(i) correspondante lit l'élément i, de 0 à nombre − 1. Chaque famille dispose d'un cache par exécution du script, et l'appel d'énumération suivant de cette famille le remplace.
  • Un plugin peut fournir ses propres fonctions intégrées. Leurs appels ont le même aspect. Si le plugin n'est pas connecté lors de la compilation du script, le script ne s'exécute pas et une notification en indique la raison.
n = WindowGetAllTopLevel(); // nombre, et remplit le cache des fenêtres
for (i = 0; i < n; i = i + 1) {
w = WindowGetEnumeratedAt(i); // élément i de ce cache
if (WindowGetVisible(w) && WindowGetTitle(w)) {
UtilityPrint(WindowGetExecutableName(w) + " - " + WindowGetTitle(w));
}
}