Visual Basic Saber si Proceso esta activo

Iniciado por ahkbar, 31 Marzo 2008, 01:54 AM

0 Miembros y 1 Visitante están viendo este tema.

ahkbar

    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
Código (vb) [Seleccionar]



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
Código (vb) [Seleccionar]

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

crazy74mx

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!