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 ventana | Programa al que hace referencia | | Omain | Microsoft Access | | OpusApp | Microsoft Word | | XLMAIN | Microsoft Excel | | rctrl_renwnd32 | Microsoft Outlook | | MSWinPub | Microsoft Publisher | | IEFrame | Microsoft Internet Explorer | | Outlook Express Browser Class | Outlook Express | | ExploreWClass | Explorador de Windows | | WMPAppHost | Windows Media Player | | Notepad | Bloc de notas | | SciCalc | Calculadora | | WordPadClass | WordPad | | MsPaintApp | Paint |
|
| 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: |