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