Página 1 de 1
Ativar um programa Observer2.exe
Enviado: 25 Out 2020 19:21
por alberto_dias
Prezados amigos,
Estou com o seguinte programa, utilizo o programa para emitir SAT, (Estado de São Paulo)
Uso o Observer2.exe da Daruma,
Uso o Sat Tanca TS 1000,
O que acontece,
Tudo funciona bem, os cupons saem corretamente, Mas, sempre o Mas,
E que de vez em quando um operador, menos avisado, encerra o Observer2.exe da
Daruma que tem que estar ligado, para fazer a comunicação do Kit, Sat Tanca Ts 1000,
com a Impressora Daruma Dr 800.
Eu preciso de um exemplo de como verificar se o Observer2.exe, foi encerrado em antes de
Abrir um novo cupom, ativar o Observer2.exe
Já tentei, o FindWindow, mas acho que não entendi, como funciona, não deu certo,
Seria possível,
Atenciosamente,
Alberto Dias
Ativar um programa Observer2.exe
Enviado: 26 Out 2020 17:48
por ANDRIL
Crie uma chamada para o Observer2.exe coloque no arquivo um método inexistente só para ver a resposta dele. Se ele demorar mais de 10 segundos para criar o retorno informe ao usuário para verificar se ele esta aberto, provavelmente esteja fechado.
Em relação a FIndWindow acho que só funcione se o Observer2 ficar aberto na barra de tarefas do Windows, se ele ficar na bandeja ela não vai conseguir localizar.
Ativar um programa Observer2.exe
Enviado: 26 Out 2020 17:56
por ANDRIL
Outra forma seria listar o que esta sendo executado no Windows, fazendo de cabeça não testei.
Código: Selecionar todos
cmd = "TASKLIST.EXE > saida.txt"
run &(cmd)
if "OBSERVER2.EXE"$upper(memoread(saida.txt))
WAIT"SENDO EXECUTADO!"
else
WAIT"NAO ESTA SENDO EXECUTADO!"
endif
Ativar um programa Observer2.exe
Enviado: 28 Out 2020 14:30
por alberto_dias
Andril,
Muito obrigado,
Fiz algumas modificações, ficou bom, consigo verificar se está ativo, e consigo, mandar executar se não estiver
Ficou perfeito,
Muito Obrigado, novamente, este problema já ficou para traz, bora resolver ou outros,

Atenciosamente,
Alberto Dias,
Ativar um programa Observer2.exe
Enviado: 02 Nov 2020 10:15
por rubens
Bom dia..
Alberto....
tem como mostrar a solução??
Eu uso as rotinas abaixo para verificar se o abrmonitor.exe está sendo executado... mas as vezes dá um problema danado e o cliente liga pedindo suporte e vejo que o programa acbrmonitor.exe está carregado pelo menos umas 10 vezes na barra de tarefas... mesmo setando o acbrmonitor para executar somente uma vez. Daí só passa o mouse obre o icone e ele fecha sozinho até o ultimo que tem que ser fechado manualmente..
Faço assim:
Código: Selecionar todos
*******************************************************************************
FUNCTION Abre_Acbr( lInternet )
LOCAL cAcbrFile:= cDirMonitor+'ACBRMONITOR.EXE'
LOCAL lRetorno := .f.
hb_Default( @lInternet, .t. ) // se consultar ou nao internet antes de verificar acbr
// Verifica se tem internet
If lInternet
If ! IsInternet()
Alert('Sem conexao com a internet !!! Tente mais tarde ...')
Return nil
EndIf
EndIf
// Se Encontrou o executavel
// executa
If File( cAcbrFile )
HB_RUN( 'START '+cAcbrFile)
// Verifica se esta sendo executado o acbrmonitor.exe
If EstaRodandoKillExe('acbrmonitor.exe')
lRetorno := .t.
Else
Alert('Nao foi possivel executar o ACBRMONITOR.EXE !!! Chame o suporte t‚cnico...')
Endif
Else
Alert('Nao foi possivel encontrar o arquivo: '+Hb_Eol()+cDirMonitor)
Endif
RETURN lRetorno
*******************************************************************************
function EstaRodandoKillExe( _cExe, _nKill )
/*
* Verificar se um Exe est sendo executado e podendo at‚ derrub -lo
* Parametros: _cExe, _nKill
* Retorno: Retorno - .t. se estiver rodando
*
* Autor: toya
*/
local Retorno := .f.
local oScriptObj
local oWmiService
local oListaProcess
local oProcessos
HB_DEFAULT(@_nKill,0)
oScriptObj := CREATEOBJECT( "wbemScripting.SwbemLocator" )
oWmiService := oScriptObj:ConnectServer()
oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )
for Each oProcessos in oListaProcess
Retorno := .t.
if _nKill == 2
oProcessos:Terminate() // mata o _cEXE
endif
next
return Retorno
*******************************************************************************
function FechaPrograma( _cExe )
/*
* Verificar se um Exe est sendo executado e podendo at‚ derrub -lo
* Parametros: _cExe, _nKill
* Retorno: Retorno - .t. se estiver rodando
*
* Autor: toya
*/
local Retorno := .f.
local oScriptObj
local oWmiService
local oListaProcess
local oProcessos
oScriptObj := CREATEOBJECT( "wbemScripting.SwbemLocator" )
oWmiService := oScriptObj:ConnectServer()
oListaProcess := oWmiService:ExecQuery( "select * from Win32_Process where Name='" + _cExe + "'" )
for Each oProcessos in oListaProcess
Retorno := .t.
oProcessos:Terminate() // mata o _cEXE
next
return Retorno
Se puder mostrar como resolveu o problema... de repente é uma solução melhor do que a que estou usando ...
Att..
Rubens
Ativar um programa Observer2.exe
Enviado: 02 Nov 2020 12:38
por alberto_dias
Rubens,
Compartilho sim,
Este Fórum, já me ajudou tanto, que não tenho palavras a agradecer, digo até, continuo na programação pela ajuda de vocês, muito obrigado,
Abaixo o código,
codigo.txt
- Código retirado de uma sequência,
- (3.09 KiB) Baixado 159 vezes
Considerações:
1 - Não coloque extensão no nome do arquivo, no meu exemplo é saidaobs, se eu colocar saidaobs.txt não compila ou não funciona.
2 - Esqueça as minhas anotações sobre o programador, é apenas para "DEBUG", para acompanhar o desenrolar da execução,
Espero que tenha ajudado,
Está funcionando perfeitamente, já testei varias e varias vezes, e está instalado em clientes, e não executa mais de uma vez (isto é ótimo)
Alberto Dias