EJEMPLO: Comaddin.exe Office 2000 complemento COM escrito en C++

Seleccione idioma Seleccione idioma
Id. de artículo: 230689 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Comaddin.exe es un ejecutable autoextraíble que muestra la creación de un Office 2000 o el modelo de objetos componentes (COM) de Office XP complemento utilizando Visual C++. Un complemento es un servidor de COM de en proceso específicamente diseñado para ejecutarse dentro del contexto de aplicaciones de Office 2000 o Office XP. Complementos COM proporcionan un método flexible, eficaz y uniforme de ampliar el entorno de Office.

Complementos COM se crean utilizando cualquier lenguaje de programación que puede crear componentes COM, como Visual Basic, C o C++, C# y la edición de Office 2000 Developer o Office XP Developer de Visual Basic para aplicaciones (VBA).

Este ejemplo muestra los pasos necesarios para crear un complemento COM en Visual C++. El ejemplo crea un shell de complemento básico que puede ampliar para crear su propio complemento de Office.

Más información

El archivo siguiente está disponible para descargarlo del Centro de descarga de Microsoft:
Comaddin.exe
Fecha de lanzamiento: 4 de enero de 1999

Para obtener información adicional acerca de cómo descargar los archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
119591Cómo obtener Archivos de soporte técnico de Microsoft desde los servicios en línea
Microsoft exploró este archivo en busca de virus. con el software de detección de virus más reciente disponible en la fecha de publicación. Asimismo, el archivo se almacenó en servidores seguros que ayudan a impedir la realización de cambios no autorizados.

Información de archivos de ejemplo

Comaddin.exe extrae los archivos siguientes a una carpeta de su elección:
   FileName                    Size
   ----------------------------------------
   
   TestAddin.dsw               541 bytes
   TestAddin.dsp               4.11 KB 
   ComAddin.h                  6.19 KB
   ComAddin.cpp                8.38 KB
   ComAddin.def                205 bytes
   MyAddin.cpp                 10.6 KB
   MyAddinCF.cpp               2.18 KB
   BttnHandler.cpp             6.27 KB

IDTExensibility2

Para que un objeto COM sea un complemento de Office, debe admitir la interfaz IDTExensibility2 tal como se describe en la de diseñador biblioteca de tipos Microsoft (Msaddndr.dll). Esta interfaz se ha declarado para usted en ComAddin.h modo importación no es necesario. Complementos COM todo heredan de esta interfaz y deben implementar cada uno de sus cinco métodos:
  • OnConnection
  • OnDisconnection
  • OnAddInsUpdate
  • OnStartupComplete
  • OnBeginShutdown
Cuando un complemento se carga primero, se realiza una llamada a QueryInterface para IDTExtensibility2. Si esta llamada falla, el complemento se descarga. Si la llamada se realiza correctamente, la aplicación host utilizará la referencia devuelta para notificar el complemento en los cambios realizados en su estado. A continuación se ofrece una descripción de cada método.

OnConnection

El evento OnConnection se desencadena siempre que el complemento está conectado. El complemento puede conectarse en el inicio, por el usuario final, o a través de automatización. Si OnConnection devuelve S_OK, el complemento se dice que se va a cargar. Si se devuelve cualquier otro valor, la aplicación host libere inmediatamente su referencia para el complemento y se destruirá el objeto.

OnConnection toma los parámetros de cuatro siguientes:
  • Aplicación: referencia a la interfaz IDispatch de la aplicación host.
  • ConnectMode - constante que especifica cómo se ha conectado el complemento.
    • ext_cm_AfterStartup - iniciado por el usuario final desde el diálogo de complementos COM.
    • ext_cm_CommandLine - conectado desde la línea de comandos.
    • ext_cm_External - conectados por una aplicación externa mediante automatización.
    • ext_cm_Startup - iniciado por el host al iniciarse la aplicación. Este comportamiento puede controlarse mediante una configuración en el registro.
  • AddInInst - una referencia al objeto COMAddIn que hace referencia a este complemento en la colección COMAddIns de la aplicación host.
  • Personalizado - matriz de Variants que puede contener datos definidos por el usuario.


OnDisconnection

El evento OnDisconnection se desencadena cuando el complemento se desconecta y justo antes de descarga de memoria. El complemento debe realizar la limpieza de recursos en este evento y restaurar los cambios realizados en la aplicación host.

OnDisconnection toma los dos parámetros siguientes:
  • RemoveMode - constante que especifica cómo se ha desconectado el complemento.
    • ext_dm_HostShutdown - desconectado cuando cierra la aplicación host.
    • ext_dm_UserClosed - desconectado por el usuario final o un controlador de automatización.
  • Personalizado - matriz de Variants que puede contener datos definidos por el usuario.


OnAddInsUpdate

El evento OnAddInsUpdate se desencadena cuando cambia el conjunto de complementos COM registrados. En otras palabras, siempre que un complemento está instalado o quitado de la aplicación host, este evento se desencadena.


OnStartupComplete y OnBeginShutdown

Los OnStartupComplete OnBeginShutdown eventos y notifican el complemento cuando la aplicación host ha dejado o está entrando en un estado donde debe evitarse interacción del usuario porque la aplicación está ocupada cargando o descargando propio de la memoria. OnStartupComplete sólo se desencadenará si el complemento se ha conectado durante el inicio y OnBeginShutdown sólo se desencadenará si el complemento se desconecta por el host durante el apagado.

Dado que la interfaz de usuario para la aplicación host es plenamente activa cuando estos eventos se desencadenan, pueden ser la única manera de realizar determinadas acciones en caso contrario, sería no está disponibles desde OnConnection y OnDisconnection.

Registrar el complemento

Además el registro COM normal, un complemento necesita registrarse a sí mismo con cada aplicación de Office 2000 que se puede ejecutar con seguridad. Para registrarse con una aplicación determinada, el complemento crea una subclave, con su ProgID como el nombre de la clave en la siguiente ubicación:

HKEY_CURRENT_USER\Software\Microsoft\Office\<appname>\Addins\<addinprogid>
El complemento puede proporcionar valores en esta ubicación clave para un nombre descriptivo y una descripción completa. Además, el complemento debe especificar su comportamiento de carga deseada mediante un valor DWORD llamado "LoadBehavior." Este valor determina cómo el complemento se cargará la aplicación host y se compone de una combinación de los siguientes valores:
  • 0 x 00 = desconectar - no está cargado.
  • 0 x 01 = conectado - está cargado.
  • 0 x 02 = bootload - cargar al inicio de la aplicación.
  • 0 x 08 = demandLoad - carga sólo cuando se solicitan por usuario.
  • 0x16 = ConnectFirstTime - carga sólo una vez (en el siguiente inicio).
El valor típico especificado es 0 x 03 (conectado | bootload).

Los complementos que implementan IDTExtensibility2 también deben especificar un valor DWORD valor llamado "CommandLineSafe" para indicar si son seguros para operaciones que no admiten una interfaz de usuario. Un valor de 0 x 00 significa false, 0 x 01 es True. Dado que este ejemplo muestra un cuadro de mensaje, no es seguro para la ejecución de la línea de comandos y que, por lo tanto, establece el valor a 0 x 00.

Introducción

Para empezar a escribir complementos, compilar el proyecto de ejemplo, ejecute regsvr32.exe en la DLL generada y, a continuación, inicie Microsoft Word, Excel, PowerPoint y FrontPage 2000. Verá un cuadro de diálogo Abrir como obtiene carga el complemento que dice "Hello" y le indica qué aplicación se encuentra en.

(c) Microsoft Corporation 1999, Reservados todos los derechos. Contribuciones por Richard r. Taylor, Microsoft Corporation.

Propiedades

Id. de artículo: 230689 - Última revisión: lunes, 9 de agosto de 2004 - Versión: 5.4
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise
  • Microsoft Visual C++ 5.0 Professional
  • Microsoft Visual C++ 6.0 Professional
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Outlook 2000 Standard
  • Microsoft Outlook 2002 Standard
Palabras clave: 
kbmt kbdownload kbautomation kbfile kbinfo kbsample KB230689 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 230689

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com