
Podemos usar las funciones FindWindow y PostMessage para encontrar una ventana y cerrarla. En el ejemplo veremos cóm 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
Estamos empleando el nombre de la ventana para encontrarla, pero esto no siempre es posible ya que éste puede variar. Lo ideal puede ser buscarla por el nombre de clase de la ventana. En el artículo "Conocer el nombre de clase de una ventana" de esta misma sección se explica cómo conseguirlo.

