Comment faire pour créer un projet d'automation à l'aide des MFC et d'une bibliothèque de types

Traductions disponibles Traductions disponibles
Numéro d'article: 178749 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique en détail comment automatiser l'intégration de composants à des applications compatibles COM telles que les applications Microsoft Office.

Plus d'informations

La section suivante montre comment créer un projet MFC. L'exemple automatise Microsoft Excel. Vous pouvez utiliser les huit premières étapes pour tout projet et modifier les étapes 9 à 15 lorsque vous travaillez avec une autre application.

Création d'un projet d'automation

  1. Avec Microsoft Developer Studio, démarrez un nouveau projet "MFC AppWizard (exe)" nommé "AutoProject".
  2. À l'étape 1 de MFC AppWizard, sélectionnez "Basée sur une boîte de dialogue" pour le type d'application, puis cliquez sur Terminer.

    La boîte de dialogue d'informations du nouveau projet s'affiche et indique que les classes à créer comprennent :
          Application: CAutoProjectApp in AutoProject.h and AutoProject.cpp
          Dialog: CAutoProjectDlg in AutoProject.h and AutoProjectDlg.cpp
    						
    Cliquez sur OK pour créer le projet.
  3. La boîte de dialogue "IDD_AUTOPROJECT_DIALOG" s'ouvre dans la zone de conception/modification de Visual Studio. Modifiez-la selon les instructions des deux étapes suivantes.
  4. Supprimez le contrôle Label (IDC_STATIC) et le bouton Cancel (IDCANCEL).
  5. Changez le nom du bouton OK en "IDRUN" et la légende en "Run". Fermez le formulaire de conception de la boîte de dialogue AutoProject.rc.
  6. Cliquez sur ClassWizard dans le menu Affichage (ou appuyez sur CTRL+W).
  7. Sélectionnez l'onglet Tables des messages. Sélectionnez IDRUN dans la zone de liste des ID d'objets et sélectionnez "BN_CLICKED" dans la zone de liste Messages. Cliquez sur Ajouter une fonction et acceptez le nom de fonction "OnRun". Cliquez sur OK pour fermer ClassWizard.

    REMARQUE : cette étape ajoute une déclaration pour le membre de fonction "OnRun();" au fichier d'en-tête nommé AutoProjectDLG.h. Cette étape ajoute également une fonction de gestionnaire de squelette de message vide nommé CAutoProjectDlg::OnRun() au fichier nommé AutoProjectDLG.cpp.
  8. Cliquez sur ClassWizard dans le menu Affichage (ou appuyez sur CTRL+W).
  9. Sélectionnez l'onglet Automation. Cliquez sur Ajouter une classe et choisissez "À partir d'une bibliothèque de types". Sélectionnez la bibliothèque d'objets de l'application à automatiser (pour cet exemple, si vous automatisez Excel 97, sélectionnez la Bibliothèque d'objets Microsoft Excel 8.0 ; l'emplacement par défaut est C:\Program Files\Microsoft Office\Office\Excel8.olb).

    Si vous automatisez Microsoft Excel 2000, sélectionnez la Bibliothèque d'objets Microsoft Excel 9.0, dont l'emplacement par défaut est C:\Program Files\Microsoft Office\Office\Excel9.olb.

    Si vous automatisez Microsoft Excel 2002 et Microsoft Office Excel 2003, la bibliothèque d'objets est incorporée dans le fichier Excel.exe. L'emplacement par défaut du fichier Excel.exe dans Office 2002 est C:\program Files\Microsoft Office\Office10\Excel.exe. L'emplacement par défaut d'Excel.exe dans Office 2003 est C:\program Files\Microsoft Office\Office11\Excel.exe. Une fois que vous avez sélectionné la bibliothèque d'objets appropriée, cliquez sur Ouvrir. Sélectionnez toutes les classes de la liste Confirmer les classes, puis cliquez sur OK.

    REMARQUE : la liste de la boîte de dialogue Confirmer les classes contient toutes les interfaces IDispatch (qui sont pratiquement identiques aux classes) de la bibliothèque de types Microsoft Excel. Dans la partie inférieure de la boîte de dialogue, vous constaterez qu'un fichier d'implémentation nommé Excel8.cpp contient des classes wrapper générées dérivées de ColeDispatchDriver() et le fichier d'en-tête de déclaration approprié est nommé Excel8.h. (Pour Excel 2002 et Excel 2003, les fichiers sont nommés Excel.cpp et Excel.h.)
  10. Cliquez sur OK pour fermer la boîte de dialogue MFC ClassWizard.
  11. Ajoutez le code suivant à la fonction CAutoProjectApp::InitInstance(), qui charge et active la bibliothèque de services COM :
          BOOL CAutoProjectApp::InitInstance()
          {
             if(!AfxOleInit())  // Your addition starts here
             {
                AfxMessageBox("Could not initialize COM dll");
                return FALSE;
             }                 // End of your addition
    
             AfxEnableControlContainer();
          .
          .
          .
    
          }
    					
  12. Ajoutez la ligne suivante aux instructions #include en haut du fichier programme AutoProject.cpp :
          #include <afxdisp.h>
    					
  13. Ajoutez l'instruction include pour excel8.h après l'instruction include pour stdafx.h en haut du fichier programme AutoProjectDlg.cpp :
          #include "stdafx.h"
          #include "excel8.h" // excel.h in the case of Excel 2002 and Excel 2003.
    					
  14. Ajouter le code automation à CAutoProjectDlg::OnRun() de sorte qu'il apparaisse comme indiqué ci-dessous :
          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. Générez et exécutez le projet. RÉSULTATS : lorsque vous cliquez sur le bouton Run dans la boîte de dialogue, Microsoft Excel démarre. Activez la boîte de dialogue Auto_Excel et faites disparaître la boîte de message. Microsoft Excel se fermera lorsque la fonction CAutoProjectDlg::OnRun() prendra fin parce que la variable de l'application sera passée hors de portée.

Remarques supplémentaires

Une fois que vous aurez ajouté les classes à votre projet à partir d'une bibliothèque de types (comme vous l'avez fait ci-dessus à l'étape 9), vous remarquerez que de nombreuses classes auront été ajoutées au projet. Dans ClassView, vous pouvez double-cliquer sur une classe pour afficher les fonctions membres de cette classe, puis double-cliquer sur la fonction membre pour afficher sa définition dans le fichier d'implémentation Excel8.cpp.

Vous devez accéder à la définition d'une fonction membre si vous souhaitez vérifier un type de retour ou si vous devez modifier l'implémentation d'une fonction. À chaque fois que vous modifiez une définition de fonction, n'oubliez pas de modifier la déclaration dans le fichier Excel8.h. Veillez également à modifier la déclaration de fonction correcte ; quelquefois, le même nom est donné aux fonctions membre de plusieurs classes ; GetApplication () en est un exemple.

Bien que les étapes ci-dessus expliquent comment automatiser Microsoft Excel, vous pouvez appliquer les mêmes principes à l'automatisation d'autres applications. La liste ci-dessous répertorie les noms de fichiers des bibliothèques de types des applications Microsoft Office :
   Application                           Bibliothèque de types
   --------------------------------------------------

   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
				
REMARQUE : l'emplacement par défaut de ces bibliothèques de types est C:\Program Files\Microsoft Office\Office (pour Office 2002 le chemin d'accès est C:\...\Office10 et pour Office 2003 le chemin d'accès est C:\...\Office11), sauf pour Dao350.dll ou Dao360.dll et Microsoft Office 10 (MSO.dll). L'emplacement par défaut de Dao350.dll/Dao360.dll est C:\Program Files\Common Files\Microsoft Shared\Dao. L'emplacement par défaut de MSO.dll est C:\Program Files\Common Files\Microsoft Shared\Office10 pour Office 2002 et C:\Program Files\Common Files\Microsoft Shared\Office11 pour Office 2003.

Références

Cet article présente une approche spécifique de la création d'un projet de boîte de dialogue. Si vous souhaitez consulter de la documentation plus générale relative au processus de création d'un projet VC++ dans l'environnement Microsoft Developer Studio, il existe un excellent didacticiel accessible par le biais de Visual Studio InfoView. Pour accéder au didacticiel, cliquez sur Rechercher dans le menu ? (Aide). Cliquez sur l'onglet Index et tapez ce qui suit :
travailler avec des projets
Cliquez sur Rechercher. Sélectionnez la rubrique "Page d'accueil : travailler avec des projets" et cliquez sur Afficher. Pour plus d'informations sur l'automation des applications Office, cliquez sur le numéro ci-dessous pour afficher l'article correspondant de la Base de connaissances Microsoft.
222101 Comment faire pour rechercher et utiliser la documentation du modèle objet Office

Propriétés

Numéro d'article: 178749 - Dernière mise à jour: mardi 22 novembre 2005 - Version: 4.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Foundation Class Library 4.2 sur le système suivant
    • Microsoft Visual C++ 5.0 Édition Standard
    • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Office XP Developer
  • Microsoft Office 2000 Developer
Mots-clés : 
kbhowto kbinterop kbautomation KB178749
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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