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 renvoiefalse,0ou"": 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,-1ou un Window nul. - Les résultats multiples suivent le schéma énumérer puis indexer. Un appel comme
WindowGetAllTopLevel(),FolderEnumerateAll(…),StringSplit(…)ouDisplayMonitorEnumeratedAll()renvoie un nombre, et la fonction…EnumeratedAt(i)/…PartAt(i)correspondante lit l'élémenti, de0à 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));
}
}