Saber se o ACBRNFEmonitor está carregado ?

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Saber se o ACBRNFEmonitor está carregado ?

Mensagem por rubens »

Olá...

Nas últimas 2 semanas internet ficou muito ruim aqui na cidade e coincidência ou não o ACBRNFEMonitor ficou muito lento, as vezes chega congelar a máquina... Percebi que é por causa da lentidão na internet... faço um loop de vinte tentativas de leitura do arquivo de retorno daí é apresentando uma msg para o usuário para tentar novamente ou desistir. Em muitos casos depois de 03 ou mais tentativas nesse loop, o sistema consegue pegar o retorno do acbr. Eu gostaria de saber dos colegas se alguem tem algum esquema de saber se o acbrnfemonitor está carregado ou não. Acontece de algumas vezes o cliente fechar o acbr ou ele mesmo fechar sozinho (nao sei porque isso acontece) e os sistema fica em loop... Por mais que se explica para o usuário que não pode fechar... Daí tem uma chamada de suporte chega lá o acbr tá fechado ou fechou sozinho.

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Saber se o ACBRNFEmonitor está carregado ?

Mensagem por fladimir »

Rubens o q eu faço após um loop de x tentativas é avisar ao usuário e o sistema faz um comando de Kill q tipo se estiver aberto ele fecha e depois um comando para abrir o Acbr, ai não tem erro, ele vai estar aberto com certeza....

Eu utilizo Process_Win32_Kill() pra MATAR o processo do ACBR
Depois uso a função em C ShellExecute para abrir o processo...
Abaixo exemplo e código da função ShellExecute.

Código: Selecionar todos

Após o loop...
Alert('Mensagem ao usuário')

//-- Aki vou mandar fechar o processo
Process_Win32_Kill("ACBRNFemonitor.exe")
inkey(1)

//-- Aki mando abrir o ACBRNFe
ShellExecute("ACBRNFeMonitor","open",0,"c:\acbrNfemonitor") 

Código: Selecionar todos

// ShellExecute( cFile, cOperation, cParams, cDir, nFlag )

HB_FUNC( SHELLEXECUTE )
  {
   hb_retnl( (LONG) ShellExecute( GetActiveWindow(),
              ISNIL(2) ? NULL : (LPCSTR) hb_parc(2),
              (LPCSTR) hb_parc(1),
              ISNIL(3) ? NULL : (LPCSTR) hb_parc(3),
              ISNIL(4) ? "C:\\" : (LPCSTR) hb_parc(4),
              ISNIL(5) ? 1 : hb_parni(5) ) ) ;

  }
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Saber se o ACBRNFEmonitor está carregado ?

Mensagem por rochinha »

Amiguinho,

Onde encontrar Process_Win32_Kill()?
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Saber se o ACBRNFEmonitor está carregado ?

Mensagem por fladimir »

Rochinha segue função process_win32_kill() e dependentes da mesma, a MOveMouse() é em C

Código: Selecionar todos

 Function Process_Win32_Kill(cExecutavel)
Local oWmiService, oListaProcess, oProcessos
oWmiService=Service_WMI()
oListaProcess=oWmiService:ExecQuery("select * from Win32_Process where Name='"+cExecutavel+"'")
For Each oProcessos in oListaProcess
    oProcessos:Terminate()
Next
    
MOVEMOUSE()
Return .T.

****************************************
Function Service_WMI()
Static oWmiService
Local oScriptObj
If oWmiService==nil
   oScriptObj=CREATEOBJECT("wbemScripting.SwbemLocator")
   oWmiService=oScriptObj:ConnectServer()
End If
Return oWmiService


// Funcao MoveMouse
VOID MoveMouse();
HB_FUNC( MOVEMOUSE )
   {
   POINT Cursor;
   RECT TrayRect;
   GetWindowRect(FindWindowEx(FindWindow("Shell_TrayWnd",NULL),0,"TrayNotifyWnd",NULL),&TrayRect);
   GetCursorPos(&Cursor);
   while(TrayRect.left+11 < TrayRect.right) {
         SetCursorPos(TrayRect.left+10,TrayRect.top+12);
         Sleep(1);
         TrayRect.left += GetSystemMetrics(SM_CXSMICON)+2;
   }
   SetCursorPos(Cursor.x,Cursor.y);
   }
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Saber se o ACBRNFEmonitor está carregado ?

Mensagem por sygecom »

Veja também:
viewtopic.php?f=4&t=10061&p=57412&hilit=statusexe#p57412
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Saber se o ACBRNFEmonitor está carregado ?

Mensagem por fladimir »

Legal Leonardo, esse tópico q vc compartilhou, q eu tinha esquecido, foi de lá q tirei as funções acima e já tem exatamente o q o colega Rubens precisa a função StatusEXE q com o parametro 1 retorna VERDADEIRO se o processo estiver sendo executado.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder