La Web del Programador: Comunidad de Programadores
 
    Pregunta:  2836 - CERRAR UNA VENTANA DEL DOS CON LAS APIS
Autor:  Z XX
Mi problema es el siguiente:
Llamo con la funcion Shell a una aplicacion MS-DOS, pero llegado un momento necesito cerrar esta ventana que ha quedado inactiva, y no sé qué función de la API tengo que usar, pues TerminateProcess no da resultado. Espero que alguien pueda orientarme, muchas gracias.

  Respuesta:  Gabriel H. Arenovich Busquet
La función SHELL devuelve in ID de proceso, utilizando ese ID se puede cerrar la ventana.

----------------------------------------------
Const PROCESS_TERMINATE& = &H1
Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

´Lanzamos la aplicación de MS-DOS
Dim hProcID As Long
hProcID = Shell("command.com", vbNormalFocus)


´Con el hProcID cerramos la ventana
Dim lHandle As Long

If hProcID Then
lHandle = OpenProcess(PROCESS_TERMINATE, 0, hProcID)
TerminateProcess lHandle, 0
CloseHandle lHandle
End If