Monitoreo de ejecución por Shell

28/01/2004 - 18:36 por JR | Informe spam
Como puedo monitorear la terminación de un programa ejecutado por la función Shell en VB, para así detener la ejecución de mi macro y continuarla cuando termine este programa

Gracias
 

Leer las respuestas

#1 Héctor Miguel
29/01/2004 - 06:29 | Informe spam
hola, JR !

... monitorear ... un programa ejecutado por ... Shell ... para detener ... mi macro y continuarla cuando termine este programa.



haciendo unas 'llamadas' a las API de windows.
[usa tambien la instrucción 'DoEvents' dentro de un bucle para que las 'otras' tareas continuen]
un ejemplo:
==> las llamadas a las API's <=Public Declare Function IniciarProceso Lib "kernel32" Alias "OpenProcess" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Declare Function MonitorDeProceso Lib "kernel32" Alias "GetExitCodeProcess" _
(ByVal hProcess As Long, lpExitCode As Long) As Long

Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

==> su 'uso' en una macro <=Sub Hasta_que_termine_la_calculadora()
Dim Proceso As Long, Estado As Long, Activa As Long
MsgBox "Se iniciará la calculadora"
Proceso = IniciarProceso(PROCESS_QUERY_INFORMATION, 0, Shell("calc", vbNormalFocus))
Do
Estado = MonitorDeProceso(Proceso, Activa)
DoEvents
Loop While Activa = STILL_ACTIVE
MsgBox "Calculadora terminada"
End Sub

saludos,
hector.

Preguntas similares