Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

CÓMO: Crear un proyecto de automatización mediante MFC y una biblioteca de tipos

Resumen
Este artículo ilustra, en detalle, cómo automatizar la integración de componentes con aplicaciones compatibles con COM, como las aplicaciones de Microsoft Office.
Más información
La sección siguiente muestra cómo puede crear un proyecto MFC. El ejemplo automatiza Microsoft Excel. Puede utilizar los primeros 8 pasos para cualquier proyecto y modificar los pasos del 9 al 15 cuando trabaje con otra aplicación.

Cree un proyecto de automatización

  1. Con Microsoft Developer Studio, inicie un nuevo proyecto "MFC AppWizard (exe)" con el nombre "AutoProject".
  2. En el paso 1 de MFC AppWizard, elija "Dialog Based" como tipo de aplicación y, a continuación, haga clic en Finalizar.

    Aparece el cuadro de diálogo Nueva información de proyecto, donde se indica que las Clases que se crearán incluyen:
          Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp      Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp						
    Haga clic en Aceptar para crear el proyecto.
  3. El cuadro de diálogo "IDD_AUTOPROJECT_DIALOG" se abre en el área de diseño y edición de Visual Studio. Modifiqúelo según las instrucciones en los próximos dos pasos.
  4. Quite el control de etiqueta (IDC_STATIC) y el botón Cancelar (IDCANCEL).
  5. Cambie el nombre del botón Aceptar a "IDRUN" y el título a "Ejecutar". Cierre el formulario de diseño del cuadro de diálogo AutoProject.rc.
  6. Haga clic en ClassWizard en el menú Ver (o presione CTRL+W).
  7. Seleccione la ficha Mapas de mensajes. Seleccione IDRUN en el cuadro de lista de identificadores de objetos y seleccione "BN_CLICKED" en el cuadro de lista Mensajes. Haga clic en Agregar función y acepte el nombre de función "OnRun". Haga clic en Aceptar para cerrar ClassWizard.

    NOTA
    Este paso agrega una declaración para la función miembro "OnRun()" en al archivo de encabezado llamado AutoProjectDLG.h. Este paso también agrega al archivo AutoProjectDLG.cpp un esqueleto de función de controlador de mensajes vacío llamada CAutoProjectDlg::OnRun().
  8. Haga clic en ClassWizard en el menú Ver (o presione CTRL+W).
  9. Seleccione la ficha Automatización. Haga clic en Agregar clase y seleccione "Desde una biblioteca de tipos". Busque la biblioteca de objetos de la aplicación que desea (para este ejemplo, si está automatizando Excel 97, seleccione la biblioteca de objetos de Microsoft Excel 8.0; la ubicación predeterminada es C:\Archivos de programa\Microsoft Office\Office\Excel8.olb).

    Si está automatizando Microsoft Excel 2000, seleccione la biblioteca de objetos de Microsoft Excel 9.0, cuya ubicación predeterminada es C:\Archivos de programa\Microsoft Office\Office\Excel9.olb.

    Si está automatizando Microsoft Excel 2002 o Microsoft Office Excel 2003, la biblioteca de objetos está incrustada en el archivo Excel.exe. La ubicación predeterminada para Excel.exe en Office 2002 es C:\Archivos de programa\Microsoft Office\Office10\Excel.exe. La ubicación predeterminada para Excel.exe en Office 2003 es C:\Archivos de programa\Microsoft Office\Office11\Excel.exe. Una vez seleccionada la biblioteca de objetos adecuada, haga clic en Abrir. Seleccione todas las clases de la lista Confirmar clases y, a continuación, haga clic en Aceptar.

    NOTA
    El cuadro de lista del cuadro de diálogo Confirmar clases contiene todas las interfaces IDispatch de la biblioteca de tipos de Microsoft Excel (que son casi idénticas a las clases). En la mitad inferior del cuadro de diálogo verá que un archivo de implementación llmado Excel8.cpp contiene contenedores de clase generados derivados de ColeDispatchDriver(), y que el archivo de encabezado de la declaración correspondiente se llama Excel8.h. (Para Excel 2002 y Excel 2003, los archivos se llaman Excel.cpp y Excel.h.)
  10. Haga clic en Aceptar para cerrar el cuadro de diálogo MFC ClassWizard.
  11. Agregue el siguiente código a la función CAutoProjectApp::InitInstance(), que carga y habilita la biblioteca de servicios COM:
          BOOL CAutoProjectApp::InitInstance()      {         if(!AfxOleInit())  // Your addition starts here         {            AfxMessageBox("Could not initialize COM dll");            return FALSE;         }                 // End of your addition         AfxEnableControlContainer();      .      .      .      }					
  12. Agregue la siguiente línea a las instrucciones #include que aparecen en la parte superior del archivo de programa AutoProject.cpp:
          #include <afxdisp.h>					
  13. Agregue la instrucción de inclusión de excel8.h después de la instrucción de inclusión de stdafx.h, en la parte superior del archivo de programa AutoProjectDlg.cpp:
          #include "stdafx.h"      #include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.					
  14. Agregue el código de automatización a CAutoProjectDlg::OnRun(), de forma que aparezca como se muestra a continuación:
          void CAutoProjectDlg::OnRun()      {          _Application app;  // app is the Excel _Application object          // Start Excel and get Application object...         if(!app.CreateDispatch("Excel.Application"))         {            AfxMessageBox("Couldn't start Excel.");         }         else         {            //Make Excel Visible and display a message          app.SetVisible(TRUE);          AfxMessageBox ("Excel is Running!");         }      }					
  15. Genere y ejecute el proyecto. Resultados: al hacer clic en el botón Ejecutar en el cuadro de diálogo, se iniciará Microsoft Excel. Active el cuadro de diálogo Auto_Excel y descarte el cuadro de mensaje. Microsoft Excel se cerrará al finalizar la función CAutoProjectDlg::OnRun(), ya que la variable de aplicación se habrá salido de su ámbito.

Notas adicionales

Una vez que haya agregado al proyecto las clases de una biblioteca de tipos (como hizo anteriormente en el paso 9), observará que se han agregado muchas clases al proyecto. En ClassView, puede hacer doble clic en una clase para ver las funciones miembro de esa clase y, a continuación, hacer doble clic en la función miembro para ver la definición de esa función en el archivo de aplicación Excel8.cpp.

Necesita ir a la definición de una función miembro si desea comprobar un tipo de devolución o si necesita cambiar la implementación de una función. Cuando quiera cambiar una definición de función, recuerde cambiar la declaración en el archivo Excel8.h. Al hacerlo, asegúrese de cambiar la declaración de función correcta. A veces se asigna el mismo nombre a las funciones miembro de varias clases: GetApplication () es un ejemplo de este caso.

Aunque los pasos anteriores ilustran cómo automatizar Microsoft Excel, puede aplicar las mismas ideas para automatizar otras aplicaciones. La siguiente lista contiene los nombres de archivo de las bibliotecas de tipos de las aplicaciones de Microsoft Office:
   Aplicación                           Biblioteca de tipos   --------------------------------------------------   Microsoft Access 97                   Msacc8.olb   Microsoft Jet Database 3.5            DAO350.dll   Microsoft Binder 97                   Msbdr8.olb   Microsoft Excel 97                    Excel8.olb   Microsoft Graph 97                    Graph8.olb   Microsoft Office 97                   Mso97.dll   Microsoft Outlook 97                  Msoutl97.olb   Microsoft PowerPoint 97               Msppt8.olb   Microsoft Word 97                     Msword8.olb   Microsoft Access 2000                 Msacc9.olb   Microsoft Jet Database 3.51           DAO360.dll   Microsoft Binder 2000                 Msbdr9.olb   Microsoft Excel 2000                  Excel9.olb   Microsoft Graph 2000                  Graph9.olb   Microsoft Office 2000                 Mso9.dll   Microsoft Outlook 2000                Msoutl9.olb   Microsoft PowerPoint 2000             Msppt9.olb   Microsoft Word 2000                   Msword9.olb    Microsoft Access 2002                 Msacc.olb   Microsoft Excel 2002                  Excel.exe   Microsoft Graph 2002                  Graph.exe    Microsoft Office 2002                 MSO.dll   Microsoft Outlook 2002                MSOutl.olb   Microsoft PowerPoint 2002             MSPpt.olb   Microsoft Word 2002                   MSWord.olb   Microsoft Office Access 2003          Msacc.olb   Microsoft Office Excel 2003           Excel.exe   Microsoft Graph 2003                  Graph.exe    Microsoft Office 2003                 MSO.dll   Microsoft Office Outlook 2003         MSOutl.olb   Microsoft Office PowerPoint 2003      MSPpt.olb   Microsoft Office Word 2003            MSWord.olb				
NOTA
La ubicación predeterminada de estas bibliotecas de tipos es C:\Archivos de programa\Microsoft Office\Office (para Office 2002 la ruta es C:\...\Office10 y para Office 2003 la ruta es C:\...\Office11), excepto para los archvios Dao350.dll o Dao360.dll y Microsoft Office 10 (MSO.dll). La ubicación predeterminada para Dao350.dll o Dao360.dll es C:\Archivos de programa\Archivos comunes\Microsoft Shared\Dao. La ubicación predeterminada para MSO.dll es C:\Archivos de programa\Archivos comunes\Microsoft Shared\Office10 para Office 2002 y C:\Archivos de programa\Archivos comunes\Microsoft Shared\Office11 para Office 2003.
Referencias
En este artículo se presenta una de las opciones existentes para generar un proyecto con cuadros de diálogo. Si desea consultar documentación más general sobre el proceso de generar un proyecto de VC++ en el entorno Microsoft Developer Studio, existe un excelente tutorial al que puede obtener acceso mediante Visual Studio InfoView. Para tener acceso al tutorial, haga clic en Buscar en el menú Ayuda. Haga clic en la ficha de índice y escriba lo siguiente:
trabajar con proyectos
Haga clic en Mostrar temas. Seleccione el tema "Página de inicio: trabajar con proyectos" y haga clic en Mostrar. Para obtener información adicional acerca de la automatización de aplicaciones Office, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
222101 Find and Use Office Object Model Documentation
O visite el siguiente sitio Web de Microsoft:
IDispatch ole automatización cuadro de lista
Propiedades

Id. de artículo: 178749 - Última revisión: 04/18/2006 03:56:48 - Revisión: 4.0

  • Microsoft Foundation Class Library 4.2
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • kbautomation kbhowto kbinterop KB178749
Comentarios