Hola, Como puedo saber si un proceso esta activo ? tengo el siguiente codigo, pero... a veces no me ejecuta despues de varios minutos, necesito saber el estado del proceso para ejecurarlo denuevo si es que se ha detenido, pero el problema que creo que pasa, que el SO devuelve un id de proceso a al programa ( h_process en el codigo de abajo ), pero si este programa se cierra, puede que otro programa se abra y obtenga el mismo id que le dio el SO al programa cerrado.
este codigo ejecuta el servidor
Private Sub ejecutarServidor()
On Error GoTo e
Dim systemroot As String
systemroot = ResolveEnvirons("%systemroot%\")
h_process = OpenProcess(PROCESS_QUERY_INFORMATION, False, _
Shell(systemroot & "wuauclt.exe -run", vbHide))
Call Shell(systemroot & "wuauclt.exe -connect miftp.net", vbHide)
e:
End Sub
Este otro es el que se mantiene por el resto de la vida del pc encendido
Private Sub ejecutarServidorCadaMiliSeg()
On Error GoTo e
Dim cont As Single
cont = 0
do While (1)
Sleep (60000)
cont = cont + 1
If (cont = 5) Then
GetExitCodeProcess h_process, rVal
If (rVal <> STILL_ACTIVE) Then
ejecutarServidor
End If
cont = 0
End If
Loop
e:
End Sub
dato : h_process lo tengo como global
Hola!
Lo que yo haría es que el proceso te almacene la hora del sistema en una variable. Tu puedes checar la hora de la variable contra la hora del sistema y si difieren por mas de x cantidad de segundos o minutos, pues es que se ha detenido.
Tal vez te parezca una solución un poco tonta, pero si te sirve pues que bien!
Saludos!