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 |