************************ Função Retirar Executável da Memória ******************
Function fRetiradamemoria(cExecutavel, nDerruba)
* Exemplo postado no PCTOLEDO: Leonardo Machado, alterada por José Alves Siqueira
* Modificado em 29/03/2012 para minigui x harbour por Marcelo Antonio Lázzaro Carli - malcarli@life.com.br
* fRetiradamemoria() - Verifica quais são os executáveis ativos, retorna array
* fRetiradamemoria([WINWORD.EXE], 1) - Verifica se o executável está ativo, retorna .T. ou .F.
* fRetiradamemoria([WINWORD.EXE], 2) - Encerra o executável
Local aNomesProcesso:= {}, oScriptObj, oWmiService, oListaProcess, oProcessos, lRet:= .F.
hb_Default(@nDerruba, 0)
Begin Sequence With {|oErr| break( oErr )}
* oScriptObj := CREATEOBJECT([wbemScripting.SwbemLocator]) // xharbour
oScriptObj := win_OleCreateObject([wbemScripting.SwbemLocator])
oWmiService:= oScriptObj:ConnectServer()
Recover
Return (IIF(nDerruba == 0, aNomesProcesso, lRet))
End
Begin Sequence With {|oErr| break( oErr )}
oListaProcess:= oWmiService:ExecQuery("select * from Win32_Process" + IIF(nDerruba == 0,""," where Name='" + cExecutavel + "'"))
Recover
Return (IIF(nDerruba == 0, aNomesProcesso, lRet))
End
For Each oProcessos in oListaProcess
Aadd(aNomesProcesso, oProcessos:Name())
lRet:= .T.
If nDerruba == 2
oProcessos:Terminate()
Endif
Next
Return (IIF(nDerruba == 0, aNomesProcesso, lRet))
********************* Fim da Função Retirar Executável da Memória **************
Att.
Marcelo A. L. Carli
MarÃlia/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: malcarli@life.com.br