Nombre de clase (classname) de las aplicaciones Office
El manejador de una ventana («Window handler«) es útil en muchos contextos (por ejemplo, para abrir un cuadro de diálogo asociado con una ventana). Para obtener este valor podemos utilizar la funcion FindWindow del API de Windows. Esta función espera dos parámetros: El nombre de clase y el título de la ventana de la que deseamos obtener el manejador.
En las aplicaciones Office, el título lo podemos obtener, por ejemplo, mediante la propiedad Caption del objeto Application [al menos en Word y Excel. En Access con la expresión CurrentDb.Properties(«AppTitle»)], por lo que sólo nos queda el parámetro classname y aunque existe un función en el API de Windows con la que podemos obtener el nombre de la clase (GetClassName), no nos es de mucha utilidad para este caso porque uno de los parámetros que necesita esta función es precisamente el que deseamos obtener: el manejador de la ventana.
En fin, que buscando en la red (www.google.com/search?q=window+class+names+office), encontré los nombres de clase de las aplicaciones Office y quiero ponerlos aquí agrupados para tenerlos a mano. Son estos:
Aplicación | Version | Window Class Name |
Access | 97 | OMain |
Access | 2000 | OMain |
Access | XP | OMain |
Access | 2003 | OMain |
Access | 2007 | OMain |
Excel | 97 | XLMAIN |
Excel | 2000 | XLMAIN |
Excel | XP | XLMAIN |
Excel | 2003 | XLMain |
Excel | 2007 | XLMain |
Front Page | 2000 | FrontPageExplorerWindow40 |
Front Page | XP | FrontPageExplorerWindow40 |
Front Page | 2003 | FrontPageExplorerWindow40 |
Expression Web | 2007 | FrontPageExplorerWindow40 |
SharePoint Designer | 2007 | FrontPageExplorerWindow40 |
InfoPath | 2003 | Framework::CFrame |
InfoPath | 2007 | Framework::CFrame |
Outlook | 97 | rctrl_renwnd32 |
Outlook | 98 | rctrl_renwnd32 |
Outlook | 2000 | rctrl_renwnd32 |
Outlook | XP | rctrl_renwnd32 |
PowerPoint | 95 | PP7FrameClass |
PowerPoint | 97 | PP97FrameClass |
PowerPoint | 2000 | PP9FrameClass |
PowerPoint | XP | PP10FrameClass |
PowerPoint | 2003 | PP11FrameClass |
PowerPoint | 2007 | PP12FrameClass |
Project | 98 | JWinproj-WhimperMainClass |
Project | 2000 | JWinproj-WhimperMainClass |
Project | 2003 | JWinproj-WhimperMainClass |
Project | 2007 | JWinproj-WhimperMainClass |
Publisher | 2003 | MSWinPub |
Publisher | 2007 | MSWinPub |
Userform | 97 | ThunderXFrame |
Userform | 2000 | ThunderDFrame |
Userform | 2003 | ThunderDFrame |
Visio | 2003 | VISIOA |
Visio | 2007 | VISIOA |
Visual Basic Editor | wndclass_desked_gsk | |
Word | 97 | OpusApp |
Word | 2000 | OpusApp |
Word | XP | OpusApp |
Word | 2003 | OpusApp |
Word | 2007 | NetUIHWND |
Fuentes:
- www.thecodenet.com/articles.php?id=3
- www.cpearson.com/excel/OfficeAppsWindowClasses.aspx
- users.skynet.be/am044448/Programmeren/VBA/vba_class_names.htm
Edición 2014-03-20
Quito el enlace a www.thecodenet.com porque, hoy, no apunta al artículo en el que me basé. Sólo contiene enlaces publicitarios.
alejandro | 20-marzo-2014 7:42 pm
gracias, me sirvió, en visual basic 6 , hay un programa que se llama spy con el que se puede ver la información de los procesos abiertos, incluyendo el classname, yo estaba corroborando esto
David Cantón | 20-marzo-2014 9:08 pm
Gracias por tu comentario, Alejandro