Você já precisou ver a árvore de processos de uma função? Saiba como fazer utilizando a ProcName().
Se você já teve a necessidade de saber a árvore de processos de uma rotina, para poder tratar alguma exceção em ponto de entrada ou em rotinas, a função ProcName retorna desde que você passe para ela um número de processo.
Mas então, como sabemos quais e quantos processos foram abertos? Por exemplo, se abrirmos o cadastro de funcionários (1), formos em outras ações e clicarmos em incluir um lançamento por verba (2), e ele carregar uma tela de lançamento (3) e clicarmos no confirmar (4), só nesse pequeno contexto já passaríamos por pelo menos 4 chamadas (claro que existem mais, mas esse é apenas um exemplo para ilustrar).
Para descobrirmos então, criamos uma variável numérica com conteúdo igual a 0, e a partir disso executas a função ProcName() em loop até não existir mais processos:
//A variável nAtu será igual a 0, e os processos serão zerados nAtu := 0 cProcessos := "" //Enquanto houver processo conforme o nAtu While ! Empty(ProcName(nAtu)) //Atualiza a variável de Processos, e incrmenta para o próximo processo cProcessos += cValToChar(nAtu) + ": " + ProcName(nAtu) + "; " + CRLF nAtu++ EndDo //Grava o resultado em um txt MemoWrite("C:\TOTVS\log_processos_ProcName.txt", cProcessos)
Abaixo um print do resultado:
Ah Daniel, mas e a função GetPrograms(), não daria certo? Infelizmente para o exemplo acima não jovens, pois a GetPrograms apenas retorna os programas carregados em memória, trazendo até programas internos relacionados ao profile do usuário, e não traz na ordem de chamada, traz por ordem alfabética.
Bom pessoal, por hoje é só.
Abraços e até a próxima.