Como ver a árvore de processos com ProcName

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:

Árvore de processos

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.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

Deixe uma resposta