Chamar funções internas
- Os argumentos são posicionais, e todos são obrigatórios. Nenhuma função interna aceita argumentos opcionais, nomeados ou em quantidade variável. Os nomes dos parâmetros na referência são apenas rótulos.
- O número de argumentos é verificado quando o script é compilado, então um número errado interrompe o script antes que qualquer coisa seja executada.
- Os tipos dos argumentos são verificados quando a chamada é executada e precisam corresponder
exatamente, com uma única conversão ampliadora. Um Integer onde um Real é declarado vira esse Real
(
MathSqrt(16)funciona), como acontece na aritmética. Um Real onde um Integer é declarado, ou um número onde Text é declarado (UtilityPrint(42)), interrompe a ação com Name: o argumento N tem o tipo errado. Parâmetros mostrados como Any aceitam qualquer tipo. - Toda função interna retorna um valor. A maioria das ações retorna um Bool que significa "deu certo?", que você pode ignorar ou testar.
- Coisas ausentes são resultados normais, não erros. Uma janela não encontrada é um Window nulo.
Passar um Window nulo, ou uma janela que foi fechada, para uma função interna
Window*não faz nada e retornafalse,0ou"", então uma sequência de chamadas de janela sobre um identificador não encontrado é segura. As funções internas de contexto fora do seu gatilho retornam"",0,-1ou um Window nulo. - Resultados múltiplos usam enumerar e depois indexar. Uma chamada como
WindowGetAllTopLevel(),FolderEnumerateAll(…),StringSplit(…)ouDisplayMonitorEnumeratedAll()retorna uma contagem, e a…EnumeratedAt(i)/…PartAt(i)correspondente lê o itemi, de0até a contagem − 1. Cada família tem um cache por execução do script, e a próxima chamada de enumeração dessa família o substitui. - Um plug-in pode fornecer funções internas próprias. As chamadas a elas têm a mesma aparência. Se o plug-in não estiver conectado quando o script for compilado, o script não é executado e uma notificação informa o motivo.
n = WindowGetAllTopLevel(); // contagem, e preenche o cache de janelas
for (i = 0; i < n; i = i + 1) {
w = WindowGetEnumeratedAt(i); // item i desse cache
if (WindowGetVisible(w) && WindowGetTitle(w)) {
UtilityPrint(WindowGetExecutableName(w) + " - " + WindowGetTitle(w));
}
}