Página 1 de 1

Saber se o ACBRNFEmonitor está carregado ?

Enviado: 06 Nov 2011 11:48
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

Saber se o ACBRNFEmonitor está carregado ?

Enviado: 06 Nov 2011 17:41
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

Saber se o ACBRNFEmonitor está carregado ?

Enviado: 07 Nov 2011 03:58
por rochinha
Amiguinho,

Onde encontrar Process_Win32_Kill()?

Saber se o ACBRNFEmonitor está carregado ?

Enviado: 07 Nov 2011 07:55
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

Saber se o ACBRNFEmonitor está carregado ?

Enviado: 07 Nov 2011 15:47
por sygecom
Veja também:
viewtopic.php?f=4&t=10061&p=57412&hilit=statusexe#p57412

Saber se o ACBRNFEmonitor está carregado ?

Enviado: 07 Nov 2011 17:00
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