Pular para o conteúdo principal

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 retorna false, 0 ou "", 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, -1 ou um Window nulo.
  • Resultados múltiplos usam enumerar e depois indexar. Uma chamada como WindowGetAllTopLevel(), FolderEnumerateAll(…), StringSplit(…) ou DisplayMonitorEnumeratedAll() retorna uma contagem, e a …EnumeratedAt(i)/…PartAt(i) correspondente lê o item i, de 0 até 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));
}
}