Visual Basic - Control ejec programa lanzado en ventana MSDOS

Life is soft - evento anual de software empresarial
 
Vista:

Control ejec programa lanzado en ventana MSDOS

Publicado por VALLE (84 intervenciones) el 05/06/2001 11:15:41
Mi problema es el siguiente:
Tengo que controlar la finalización de un programa lanzado en una ventana bajo MSDOS.
Anteriomente me respondisteis mediante un procedimiento que utiliza las siguientes API's:

OpenProcess, GetExitCodeProcess y Sleep.

No me sive, pues mediante la Función puedo controlar la finalización de un programa bajo Windows, pero bajo MSDOS no funciona, se sale del bucle antes de que finalice la ejecución.

¿COMO PUEDO HACERLO?

Agradecería muchísimo una respuesta ya que es VITAL para mi programa

Gracias desde SEVILLA.
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:Control ejec programa lanzado en ventana MSDOS

Publicado por Valle (84 intervenciones) el 06/06/2001 10:14:51
SI FUNCIONA.
Para los que lo necesiten, Gracias a nuestro amigo BENJO:
Public Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public 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

Sub Shell32(ByVal Appli As String)

' aquí poné el código para cambiar la configuración numérica

Dim hProcess As Long
Dim RetVal As Long

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Appli, vbMinimizedFocus))
' acá ejecutás tu aplicación y se tome el Id del
' proceso

Do

' Se fija el estado del proceso
GetExitCodeProcess hProcess, RetVal

' Devuelve por un milisegundo el control al sistema, para que no
'se cuelgue
DoEvents: Sleep 100

' Repite el Bucle hasta que el programa esté inactivo
Loop While RetVal = STILL_ACTIVE
' si sale es porque ya no está ejecutándose la aplicación que levantaste con el Shell.

End Sub

GRACIAS
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