Visual Basic - Saber si un programa ha finalizado

Life is soft - evento anual de software empresarial
 
Vista:

Saber si un programa ha finalizado

Publicado por Javier (3 intervenciones) el 23/07/2001 08:09:57
Estoy programando en Visual Basic 5.0 sobre Windows 2000 Profesional. Necesito llamar a un programa externo y mi aplicación no debe continuar hasta que este programa finalice.

He probado con las API's OpenProcess y GetExitCodeProcess, pero no consigo ningún resultado pues ambas funciones me devuelven siempre el valor 0.

¿ Cómo puedo saber si la función externa ha concluido su ejecución ?

Un saludo y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Saber si un programa ha finalizado

Publicado por afogutu (321 intervenciones) el 23/07/2001 17:32:04
Decime tu email y te mando un ejemplo.

Afogutu.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Saber si un programa ha finalizado

Publicado por afogutu (321 intervenciones) el 23/07/2001 17:51:39
Este ejemplo lo saqué del guille.

le pasas nada mas que la ruta del archivo que querés ejecutar y listo.

te doy un consejo. si lo llamas desde un form hace lo siguiente.

me.enabled = false
ejectuararchivo
me.enabled = true

'Las declaraciones van en un módulo
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

'Un procedimiento para ejecutar y esperar a que termine
Public Sub ExecCmdNoFocus(ByVal CmdLine As String)
'Esperar a que un proceso termine,
'la ventana se mostrará minimizada sin foco
Dim hProcess As Long
Dim RetVal As Long

'The next line launches CmdLine as icon,
'captures process ID
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, _
Shell(CmdLine, vbMinimizedNoFocus))
Do
'Get the status of the process
GetExitCodeProcess hProcess, RetVal
'Sleep command recommended as well
'as DoEvents
DoEvents
Sleep 100
'Loop while the process is active
Loop While RetVal = STILL_ACTIVE
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar