Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
API : Detectar si una aplicación externa está abierta
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Cómo puedo saber por código si una aplicación está abierta (Word, Excel, etc)?
Respuesta : Puedes utilizar esta pequeña función, que te preguntará por el nombre de la clase de ventana de cada aplicación, y devolverá True/False según esté abierta o cerrada.

He recopilado una serie de nombres de clase de ventanas principales de algunas aplicaciones comunes:

Nombre de clases de ventana

Nombre de clase de ventanaPrograma al que hace referencia
OmainMicrosoft Access
OpusAppMicrosoft Word
XLMAINMicrosoft Excel
rctrl_renwnd32Microsoft Outlook
MSWinPubMicrosoft Publisher
IEFrameMicrosoft Internet Explorer
Outlook Express Browser ClassOutlook Express
ExploreWClassExplorador de Windows
WMPAppHostWindows Media Player
NotepadBloc de notas
SciCalcCalculadora
WordPadClassWordPad
MsPaintAppPaint
y para usar la función (por ejemplo para preguntar si está abierto Excel)
If IsAppOpen("XLMAIN") Then
    MsgBox "Excel está abierto"
End If
pon el siguiente código en un módulo (las declaraciones de funciones API deben escribirse siempre por encima de cualquier función o procedimiento)
'---------------------------------------------------------
'
' IsAppOpen
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
' función para localizar el manipulador (handle) de una ventana
Private Declare Function FindWindow Lib "user32" _
                Alias "FindWindowA" _
                (ByVal lpClassName As String, _
                ByVal lpWindowName As String) As Long

Function IsAppOpen(ClassName As String) As Boolean
    If FindWindow(ClassName, vbNullString) Then
        IsAppOpen = True
    End If
End Function
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

 

Última actualización: 21/4/2005