Exite alguma função do Harbour para verificar se um aplicativo ou processo está rodando na memória?, Hoje eu consigo saber se o meu próprio executável já está rodando para não abrir outra estância usando o velho truque de criar um arquivo txt e travar ele deixando-o aberto enquanto rodo o aplicativo, uma outra estância do mesmo aplicativo tenta deletar este arquivo se exitir, se não conseguir sabemos que uma estância deste aplicativo já está rodando, mas e quando queremos saber de um terceiro aplicativo se está rodando? Como ler (pegar) do Windows a lista de processos ativos?
Velho truque:
if File('cte_emuso.01')
fErase('cte_emuso.01')
if fError() <> 0
MessageBoxTimeout('O programa já se encontra em uso!', 'PrintCTe TMS Expresso.Cloud ' + g_cVersao + ': Aviso!', MB_ICONEXCLAMATION, 7000 )
QUIT
end
RegistraLog('Sistema foi interrompido anteriormente')
end
p_SOSHandle := fCreate('cte_emuso.01') // Cria o arquivo de controle
fClose(p_SOSHandle)
p_SOSHandle := fOpen('cte_emuso.01',1) // Abre travando o arquivo de controle
RegistraLog('Sistema iniciado (em execução)' )