Cerrar una ventana (aplicación)


Agradecemos a El Judas por esta información...

Podemos usar las funciones FindWindow y PostMessage para encontrar una ventana y cerrarla. En el ejemplo veremos cómo cerrar una ventana que tenga como título "Calculadora".

Declaramos en un formulario :

Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Declare Function PostMessage Lib "user32" Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long

Public Const WM_CLOSE = &H10

Y para encontrar la ventana y cerrarla :

Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, "Calculadora")
Debug.Print winHwnd
If winHwnd <> 0 Then
    RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)
    If RetVal = 0 Then
        MsgBox "Error enviando mensaje."
    End If
Else
    MsgBox "La Calculadora no está abierta."
End If