Olá Rubens,
Então vou tentar executar essa rotina sem o nKill para ver se dá certo,
Obrigado.

Moderador: Moderadores
//-----------------------------------------------------------------------------
// Aqui verifica o numero de vezes que esta aberto esse executavel e coloca um numero de referencia nele....
//-----------------------------------------------------------------------------
PUBLIC NOME_CLIENTE:="DINAMICA"
TEMPORARIO="ZYX_"
NUMERO_DO_APP=VER_NUM_TELAS()
IF NUMERO_DO_APP>3
ALERT("N" + CHR( 163 ) + "mero de aberturas excedido.;Existem 3 telas abertas do sistema!")
close all
quit
ENDIF
//-----------------------------------------------------------------------------
//
// Esta funcao varre o tasklist para ver se o programa ja esta rodando
// Nesse caso o A_MENU1.EXE ou o contido variavel NOME_CLIENTE
//
FUNCTION VER_NUM_TELAS()
local AA,BB,CC,DD,UM
//--- Se existir um arquivo de LOG anterior, entao apaga ele
AA=TEMPORARIO+"LOG.TXT"
IF FILE(AA) // NAO USAR LETO_FILE, eh para verificacao local
ERASE &AA
ENDIF
//--- Monta a query
AA="TASKLIST>"+TEMPORARIO+"LOG.TXT"
//--- Executa a query
//--- Colocando dentro do arquivo TXT de log a relacao de todos arquivos rodando no PC
HB_RUN (AA)
AA=TEMPORARIO+"LOG.TXT"
UM=MEMOREAD(AA)
CC=NOME_CLIENTE+".EXE"
DD=0
//--- AQUI verifica se ha outro programas abertos no computador local ------
FOR F=1 TO MLCOUNT(UM,100) // Quantidade de linhas (memoline) em UM ate 100 colunas.
BB=MEMOLINE(UM,100,F) // Atribui a BB ate 100 caracteres da linha F do arquivo de LOG gerado
IF "A_MENU1.EXE"$UPPER(BB) .OR. CC$UPPER(BB) // Verifica de nessa linha tem um dos arquivos mencionado
DD++ // Se houver entao incrementa a variavel DD
*ALERT("ENCONTRADA "+STR(DD)+" OCORRENCIA")
ENDIF
NEXT
//--- Apaga o arquivo de LOG gerado.
AA=TEMPORARIO+"LOG.TXT"
IF FILE(AA) // NAO USAR LETO_FILE, eh para verificacao local
ERASE &AA
ENDIF
RETURN DD
//
// Esta funcao varre o tasklist para ver se o programa ja esta rodando
// Nesse caso o A_MENU1.EXE ou o contido variavel NOME_CLIENTE
//
FUNCTION VER_NUM_TELAS()
local AA, BB, CC:=NOME_CLIENTE+".EXE" , DD:=0 , UM:=""
//--- Aqui coloca o resultado do comando TASKLIST dos DOS na variavel UM
// nResult := hb_ProcessRun( cCommand, [cStdIn], [@cStdOut], [@cStdErr], [lDetach] )
AA= hb_processRun( "tasklist" ,, @UM,, .t. )
//--- AQUI verifica se ha outro programas abertos no computador local ------
FOR F=1 TO MLCOUNT(UM,100) // Quantidade de linhas (memoline) em UM ate 100 colunas.
BB=MEMOLINE(UM,100,F) // Atribui a BB ate 100 caracteres da linha F do arquivo de LOG gerado
IF "A_MENU1.EXE"$UPPER(BB) .OR. CC$UPPER(BB) // Verifica de nessa linha tem um dos arquivos mencionado
DD++ // Se houver entao incrementa a variavel DD
*ALERT("ENCONTRADA "+STR(DD)+" OCORRENCIA")
ENDIF
NEXT
RETURN DD
Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes