Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: ahkbar en 31 Marzo 2008, 01:54 AM

Título: Visual Basic Saber si Proceso esta activo
Publicado por: ahkbar en 31 Marzo 2008, 01:54 AM
    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
Título: Re: Visual Basic Saber si Proceso esta activo
Publicado por: crazy74mx en 5 Abril 2008, 01:40 AM
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!