ram_bh Posted March 2, 2017 Report Share Posted March 2, 2017 Olás! Minha aplicação depende de outro serviço. Como saber se o serviço está em execução? Obrigado! Rodrigo Melo Belo Horizonte / MG FW-17.01 / BCC-7 / xH-123 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted March 2, 2017 Report Share Posted March 2, 2017 Quote Link to comment Share on other sites More sharing options...
ADutheil Posted March 5, 2017 Report Share Posted March 5, 2017 Olás! Minha aplicação depende de outro serviço. Como saber se o serviço está em execução? Obrigado! Rodrigo Melo Belo Horizonte / MG FW-17.01 / BCC-7 / xH-123 FUNCTION Main // ProcessoUP( "Nome do Processo" ) ProcessoUP( "Spooler" ) RETURN NIL FUNCTION ProcessoUP( cProc ) LOCAL nProc := fCreate( "ChkProc.bat" ) LOCAL lRetu := .F. LOCAL cStrg := "sc query " + cProc + " > ChkProc.txt" LOCAL nRetu LOCAL nHndl LOCAL cBuff fWrite( nProc, cStrg ) fClose( nProc ) nRetu := ShellExecute( , "open", "ChkProc.bat",,, ) IF nRetu > 32 nHndl := fOpen( "ChkProc.txt" ) WHILE hb_fReadLine( nHndl, @cBuff ) == 0 IF "RUNNING" $ cBuff lRetu := .T. msgInfo( "PROCESSO " + cProc + " INICIADO.", "AVISO" ) EXIT ENDIF ENDDO ELSE msgStop( "O COMANDO NÃO FOI EXECUTADO COM SUCESSO!", "ATENÇÃO" ) ENDIF fErase( "ChkProc.bat" ) fErase( "ChkProc.txt" ) RETURN ( lRetu ) Quote Link to comment Share on other sites More sharing options...
ADutheil Posted March 5, 2017 Report Share Posted March 5, 2017 Word instalado IF WinWordObj() != NIL // INSTALADO Para o Excel use ExcelObj() Quote Link to comment Share on other sites More sharing options...
ADutheil Posted March 5, 2017 Report Share Posted March 5, 2017 Como saber se o Windows Live Está Instalado no Windows 7? ou o Outlook Express no Windows XPeta? Eu tentaria algo assim: FUNCTION OutlookOK LOCAL lInstalado := .T. GetActiveObject( "Outlook.Application", @lInstalado ) RETURN lInstalado Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted March 5, 2017 Report Share Posted March 5, 2017 Baseado no post dos amigos, segue a minha sugestão: Run ("SC QUERYEX > C:\TEMP\TESTE.TXT") cRead := MemoRead("C:\TEMP\TESTE.TXT") IF !WildMatch("*FIREBIRD*SERVER*",Upper(cRead)) MsgStop("Servidor não está ativo","Alerta") Quit Endif JMSilva - Caraguatatuba-SP Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted March 5, 2017 Report Share Posted March 5, 2017 Outra Dica: Run ("Net Start > C:\TEMP\TESTE.TXT") cRead := MemoRead("C:\TEMP\TESTE.TXT") //MsgInfo(cRead) IF !WildMatch("*FIREBIRD*SERVER*",Upper(cRead)) Run ("net start FirebirdGuardianDefaultInstance") //Ativa o serviço Endif JMSilva - Caraguatatuba-SP Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted March 6, 2017 Report Share Posted March 6, 2017 Outra forma, mais interessante: local oLoc,oWMI,oServ,oDatos,cRead oLoc := CreateObject( "wbemScripting.SwbemLocator" ) oWMI := oLoc:ConnectServer() oServ:= oWMI:ExecQuery("Select * from Win32_Service Where started = true") cRead:="" For Each oDatos in oServ cRead += ALLTRIM(cValToChar(oDatos:Name))+";"+CHR(13)+CHR(10) Next //msginfo(cRead) IF !WildMatch("*FIREBIRD*SERVER*",Upper(cRead)) MsgStop("ativando") //Run ("net start FirebirdGuardianDefaultInstance") //Ativa o serviço Run ("net start FirebirdServerDefaultInstance") //Ativa o serviço Endif JMSilva - Caraguatatuba-SP Quote Link to comment Share on other sites More sharing options...
mkyx Posted March 7, 2017 Report Share Posted March 7, 2017 Uma ideia seria pegar todas as tarefas em execução pelo Windows, jogar num vetor, e depois analisar esse vetor. Parece-me que já vi algo a respeito, aqui no fórum, mas não me recordo onde. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted March 7, 2017 Report Share Posted March 7, 2017 QQ uma das três opções dá para fazer é só substituir o armazenamento dá variável cread em um vetor. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted March 8, 2017 Report Share Posted March 8, 2017 Uma ideia seria pegar todas as tarefas em execução pelo Windows, jogar num vetor, e depois analisar esse vetor. Parece-me que já vi algo a respeito, aqui no fórum, mas não me recordo onde. @mkyx acho que é esta... dê uma olhada: Function ProgramasInstalados() LOCAL oLoc:= CreateObject( "wbemScripting.SwbemLocator" ) LOCAL objWMI:= oLoc:ConnectServer() LOCAL oSoft := objWMI:ExecQuery("Select * from Win32_Product") LOCAL oDatos LOCAL aProgromasInstalados:={} For Each oDatos in oSoft aadd(aProgromasInstalados,{Alltrim(cValtoChar(oDatos:Name)),; Alltrim(cValtoChar(oDatos:Version)),; Alltrim(cValtoChar(oDatos:InstallLocation))}) Next return aProgromasInstalados Quote Link to comment Share on other sites More sharing options...
sistem Posted March 8, 2017 Report Share Posted March 8, 2017 MYRUN("tasklist > c:\lista.txt") Pstring( MemoRead("c:\lista.txt"), "calc.exe") FUNCTION Pstring( cString, cpesquisa ) Local nPos, nTamArq:=Len(cpesquisa) nPos := AT( cpesquisa, cString ) ? subs(cString,nPos,nTamArq) If cpesquisa = subs(cString,nPos,nTamArq) MYRUN( "TASKKILL /IM "+cpesquisa ) // serviço em execução e matando o processo Endif Return nil Function MYRUN( cComando ) local oShell, Ret oShell := CreateObject( "WScript.Shell" ) Ret := oShell:Run( "%comspec% /c " + cComando, 0, .T. ) oShell := NIL Return If( Ret=0, .t., .f. ) Quote Link to comment Share on other sites More sharing options...
Theotokos Posted March 8, 2017 Report Share Posted March 8, 2017 @mkyx acho que é esta... dê uma olhada: Function ProgramasInstalados() LOCAL oLoc:= CreateObject( "wbemScripting.SwbemLocator" ) LOCAL objWMI:= oLoc:ConnectServer() LOCAL oSoft := objWMI:ExecQuery("Select * from Win32_Product") LOCAL oDatos LOCAL aProgromasInstalados:={} For Each oDatos in oSoft aadd(aProgromasInstalados,{Alltrim(cValtoChar(oDatos:Name)),; Alltrim(cValtoChar(oDatos:Version)),; Alltrim(cValtoChar(oDatos:InstallLocation))}) Next return aProgromasInstalados MsgRun("Buscando Dados...","Programas Instalados", {|| xBrowse( ProgramasInstalados() ) }) ) Quote Link to comment Share on other sites More sharing options...
ram_bh Posted March 10, 2017 Author Report Share Posted March 10, 2017 Outra forma, mais interessante: local oLoc,oWMI,oServ,oDatos,cRead oLoc := CreateObject( "wbemScripting.SwbemLocator" ) oWMI := oLoc:ConnectServer() oServ:= oWMI:ExecQuery("Select * from Win32_Service Where started = true") cRead:="" For Each oDatos in oServ cRead += ALLTRIM(cValToChar(oDatos:Name))+";"+CHR(13)+CHR(10) Next //msginfo(cRead) IF !WildMatch("*FIREBIRD*SERVER*",Upper(cRead)) MsgStop("ativando") //Run ("net start FirebirdGuardianDefaultInstance") //Ativa o serviço Run ("net start FirebirdServerDefaultInstance") //Ativa o serviço Endif JMSilva - Caraguatatuba-SP Bom dia! Essa solução atendeu à minha demanda, obrigado! Um abraço! Rodrigo Melo Jmsilva 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.