Comment faire pour générer un complément COM Office à l'aide de Visual Basic .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 302896 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Microsoft Office 2000 ou version ultérieure prend en charge une architecture de conception uniforme, nouveau pour créer des compléments application afin d'améliorer et de contrôler les applications Office. Ces compléments sont appelés des compléments COM. Cet article étape par étape décrit des compléments COM Office et explique comment créer un COM Office complément à l'aide de Microsoft Visual Basic .NET.

L'interface IDTExensibility2

Un complément COM est un serveur COM in-process ou bibliothèque de liens dynamiques ActiveX (DLL) qui implémente l'interface IDTExensibility2 comme indiqué dans la bibliothèque de type Microsoft Add-in Designer (Msaddndr.dll). Tous les compléments COM héritent de cette interface et doivent implémenter chacune de ses cinq méthodes.

OnConnection

L'événement OnConnection est déclenché chaque fois que le complément COM est connecté. Le complément peut être connecté au démarrage, par l'utilisateur final, ou par l'intermédiaire d'Automation. Si OnConnection signale sa réussite, le complément est dit chargé. Si un message d'erreur est renvoyé, l'application ordinateur hôte renvoie immédiatement sa référence pour le complément et l'objet est détruit.

OnConnection prend les quatre paramètres suivants :
  • application - une référence à l'objet d'application ordinateur hôte.
  • ConnectMode - une constante qui spécifie comment le complément est connecté. Le complément peut être connecté de l'une des manières suivantes :
    • ext_cm_AfterStartup - le complément est démarré par l'utilisateur final de la boîte de dialogue Compléments COM .
    • ext_cm_CommandLine - le complément est connecté à partir de la ligne de commande. Notez que cela ne s'applique pas à la création de compléments COM pour les applications Office.
    • ext_cm_External - le complément est connecté par une application externe par l'intermédiaire d'Automation. Notez que cela ne s'applique pas au développement de compléments COM pour Office applications.
    • ext_cm_Startup - le complément est démarré par la ordinateur hôte au démarrage de l'application. Ce comportement est contrôlé par un paramètre dans le Registre.
  • AddInInst - une référence à l'objet COMAddIn qui fait référence à ce complément dans la collection COMAddIns de l'application ordinateur hôte.
  • personnalisé - un tableau de valeurs type Variant qui peut contenir des données définis par l'utilisateur.

OnDisconnection

L'événement OnDisconnection se déclenche lorsque le complément COM est déconnecté et juste avant qu'il se décharge de la mémoire. Le complément doit effectuer tout le nettoyage des ressources dans cet événement et doit restaurer les modifications apportées à l'application ordinateur hôte.

OnDisconnection prend les deux paramètres suivants :
  • RemoveMode - une constante qui spécifie comment le complément a été déconnecté. Le complément peut être déconnecté de l'une des manières suivantes :
    • ext_dm_HostShutdown - le complément est déconnecté fermeture de l'application ordinateur hôte.
    • ext_dm_UserClosed -le complément en est déconnecté par l'utilisateur final ou une Automation contrôleur.
  • personnalisé - un tableau de valeurs type Variant qui peut contenir des données définis par l'utilisateur.

OnAddInsUpdate

L'événement OnAddInsUpdate se déclenche lors de l'ensemble d'enregistrée COM modifications des compléments. En d'autres termes, chaque fois qu'un complément COM est installé ou supprimé de l'application ordinateur hôte, cet événement se déclenche.

OnStartupComplete et OnBeginShutdown

Les deux le OnStartupComplete et OnBeginShutdown méthodes sont appelées lorsque l'application ordinateur hôte a quitté ou est un état dans quel utilisateur interaction doit être évitée car l'application est en train de chargement ou de se décharger de la mémoire. OnStartupComplete est appelée uniquement si le complément a été connecté lors du démarrage et OnBeginShutdown est appelée uniquement si le ordinateur hôte déconnecte le complément lors de l'arrêt.

L'interface utilisateur de l'application ordinateur hôte est totalement active lorsque ces événements se déclenchent, ils peuvent être le seul moyen d'effectuer certaines actions qui sinon ne seraient pas disponibles à partir OnConnection et OnDisconnection .

Enregistrement de complément COM

En outre pour l'enregistrement COM normal, un complément COM doit s'enregistrer auprès de chaque application Office dans lequel il s'exécute. À se pour inscrire avec une application particulière, le complément doit créer une sous-clé, en utilisant son ProgID comme nom pour la clé, sous l'emplacement suivant :
HKEY_CURRENT_USER\Software\Microsoft\Office\ OfficeApp \Addins\ ProgID
Le complément peut fournir des valeurs à cet emplacement de clé pour un nom d'affichage convivial et une description complète. En outre, le complément doit spécifier son comportement de chargement souhaité en utilisant une valeur DWORD nommée
LoadBehavior
. Cette valeur détermine comment le complément est chargé par l'application ordinateur hôte et se compose d'une combinaison des valeurs suivantes :
  • 0 = Déconnecter - n'est pas chargé.
  • 1 = Connected - est chargé.
  • 2 = Bootload - chargé au démarrage de l'application.
  • 8 = DemandLoad - chargé uniquement lorsque demandée par l'utilisateur.
  • 16 = ConnectFirstTime - chargé une seule fois (au prochain démarrage).
La valeur généralement spécifiée est 0x03 (Connected | Bootload).

Compléments qui implémentent IDTExtensibility2 doivent spécifier également une valeur DWORD nommée
CommandLineSafe
pour indiquer si les compléments sont sûrs pour des opérations qui ne prennent pas en charge une interface utilisateur. Une valeur de 0 x 00 indique False et la valeur 0 x 01 indique True.

Comment faire pour créer un complément COM à l'aide de Visual Basic .NET

Comme nous l'avons vu précédemment, un complément COM Office est un COM in-process serveur qui est activé par une application Office via la couche d'exécution COM. Par conséquent, développer un complément COM dans Visual Basic .NET exige que le composant de complément être implémenté dans .NET et puis exposé aux clients COM (c'est-à-dire, les applications Office) via la couche d'interopérabilité COM.

Pour créer un complément COM dans Visual Basic .NET, procédez comme suit :
  1. Dans Visual Basic .NET, créer une bibliothèque de classes projet.
  2. Ajouter une référence à la bibliothèque de type qui implémente IDTExtensibility2 . L'assembly interop primaire de cette est déjà disponible sous le nom Extensibility .
  3. Ajouter une référence à la bibliothèque objet Microsoft Office. L'assembly interop primaire de cette est déjà disponible sous le nom de Office .
  4. Créez une classe publique dans la bibliothèque de classe qui implémente IDTExtensibility2 .
  5. Après la classe bibliothèque est créé, inscrire la bibliothèque pour COM interop. Pour ce faire, générer une forte appelé assembly pour cette bibliothèque de classe et puis l'enregistrer avec COM interop. Vous pouvez utiliser Regasm.exe pour inscrire un composant .NET pour COM interop.
  6. Créez entrées de Registre afin que les applications Office puissent identifier et charger le complément.
Vous pouvez choisir d'achever toutes ces étapes, ou vous pouvez créer un projet .NET de type Shared Addin . Cela démarre l'Assistant Extensibilité, qui vous permet de créer un complément COM dans .NET.

L'Assistant Extensibilité crée un projet de bibliothèque de classes de Visual Basic .NET ainsi une classe Connect qui implémente l'interface IDTExtensibility2 . Le code squelette qui implémente les membres vides D'idtextensibility est également généré. Ce projet possède des références aux assemblys d'extensibilité et Office. Les paramètres de génération du projet ont Registre pour COM Interop sélectionnée. Le fichier d'assembly (.snk) de clé est généré et référencé dans l'attribut AssemblyKeyfile dans AssemblyInfo.vb.

Ainsi que le projet de bibliothèque de classes, l'Assistant génère un projet d'installation que vous pouvez utiliser pour déployer le complément COM sur d'autres ordinateurs. Vous pouvez supprimer ce projet si nécessaire.

Exemple pas à pas

  1. Dans le menu Fichier dans Visual Studio .NET, cliquez sur Nouveau , puis cliquez sur le projet .
  2. Dans la boîte de dialogue Nouveau projet , développez autres projets sous types de projets , sélectionnez projets d'extensibilité et puis sélectionnez le modèle partagé Add-in .
  3. Tapez MyCOMAddin comme nom de la macro complémentaire, puis cliquez sur OK .
  4. Lorsque l'Assistant Extensibilité s'affiche, procédez comme suit :
    1. Sur la page 1, sélectionnez Créer un complément à l'aide Visual Basic , puis cliquez sur suivant .
    2. Sur la page 2, sélectionnez les applications ordinateur hôte suivantes et cliquez sur suivant :
      • Microsoft Word
      • Microsoft PowerPoint
      • Microsoft Outlook
      • Microsoft Excel
      • Microsoft Access
    3. Sur la page 3, donnez un nom et une description pour le complément, puis cliquez sur suivant .

      note Le nom et la description de la macro complémentaire apparaissent dans la boîte de dialogue Compléments COM dans l'application Office.

    4. Sur la page 4, sélectionnez toutes les options disponibles, puis cliquez sur suivant .
    5. Cliquez sur Terminer .
  5. Ajoutez le membre suivant à la classe Connect :
    Dim WithEvents MyButton As CommandBarButton 
  6. Implémentez le code pour tous les membres IDTExtensibility2 dans la classe Connect , comme suit :
        Public Sub OnBeginShutdown(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnBeginShutdown
            On Error Resume Next
            ' Notify the user you are shutting down, and delete the button.
            MsgBox("Our custom Add-in is unloading.")
            MyButton.Delete()
            MyButton = Nothing
    
        End Sub
    
        Public Sub OnAddInsUpdate(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnAddInsUpdate
            '
        End Sub
    
        Public Sub OnStartupComplete(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnStartupComplete
    
            Dim oCommandBars As CommandBars
            Dim oStandardBar As CommandBar
    
            On Error Resume Next
            ' Set up a custom button on the "Standard" command bar.
            oCommandBars = applicationObject.CommandBars
            If oCommandBars Is Nothing Then
                ' Outlook has the CommandBars collection on the Explorer object.
                oCommandBars = applicationObject.ActiveExplorer.CommandBars
            End If
    
            oStandardBar = oCommandBars.Item("Standard")
            If oStandardBar Is Nothing Then
                ' Access names its main toolbar Database.
    
                oStandardBar = oCommandBars.Item("Database")
    
            End If
    
            ' In case the button was not deleted, use the exiting one.
            MyButton = oStandardBar.Controls.Item("My Custom Button")
            If MyButton Is Nothing Then
    
                MyButton = oStandardBar.Controls.Add(1)
                With MyButton
                    .Caption = "My Custom Button"
                    .Style = MsoButtonStyle.msoButtonCaption
    
                    ' The following items are optional, but recommended. 
                    ' The Tag property lets you quickly find the control 
                    ' and helps MSO keep track of it when more than
                    ' one application window is visible. The property is required
                    ' by some Office applications and should be provided.
    
                    .Tag = "My Custom Button"
    
                    ' The OnAction property is optional but recommended. 
                    ' It should be set to the ProgID of the add-in, so that if
                    ' the add-in is not loaded when a user clicks the button,
                    ' MSO loads the add-in automatically and then raises
                    ' the Click event for the add-in to handle. 
    
                    .OnAction = "!<MyCOMAddin.Connect>"
    
                    .Visible = True
                End With
            End If
    
            ' Display a simple message to show which application you started in.
            MsgBox("Started in " & applicationObject.Name & ".")
    
    
            oStandardBar = Nothing
            oCommandBars = Nothing
    
    
        End Sub
    
        Public Sub OnDisconnection(ByVal RemoveMode As Extensibility.ext_DisconnectMode, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnDisconnection
    
            On Error Resume Next
            If RemoveMode <> Extensibility.ext_DisconnectMode.ext_dm_HostShutdown Then _
               Call OnBeginShutdown(custom)
    
            applicationObject = Nothing
    
    
        End Sub
    
        Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection
    
    
            MsgBox("On Connection In MyAddin")
            applicationObject = application
            addInInstance = addInInst
    
    
            ' If you aren't in startup, manually call OnStartupComplete.
            If (connectMode <> Extensibility.ext_ConnectMode.ext_cm_Startup) Then _
               Call OnStartupComplete(custom)
    
        End Sub
    
    
        Private Sub MyButton_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean) Handles MyButton.Click
            MsgBox("Our CommandBar button was pressed!")
        End Sub
    					
  7. Générez et testez la macro COMPLÉMENTAIRE. Pour ce faire, procédez comme suit :
    1. Dans le menu Générer , cliquez sur Créer MyCOMAddin . Notez que création de la macro complémentaire COM enregistre la classe .NET avec l'interop COM.
    2. Démarrez un des applications Office qui vous sélectionné comme applications ordinateur hôte pour votre complément (par exemple, Microsoft Word ou Microsoft Excel).
    3. Après le démarrage de la macro complémentaire, l'événement OnConnection est déclenché, et un message s'affiche. Lorsque vous faites disparaître la boîte de message, l'événement OnStartupComplete se déclenche et vous recevez une deuxième boîte de message. Faites disparaître la boîte de message.
    4. Notez que la macro complémentaire ajouté un nouveau bouton personnalisé intitulé "Mon bouton personnalisé" dans la barre d'outils standard.
    5. Cliquez sur Mon bouton personnalisé . L'événement Click du bouton est géré par le complément et un message s'affiche. Faites disparaître la boîte de message.
    6. Quittez l'application Office.
    7. Lorsque vous quittez l'application, le OnBeginShutDown se déclenche des événements et vous recevez une boîte de message. Faites disparaître la boîte de message pour terminer la démonstration.

Références

Pour plus d'informations sur l'écriture de compléments COM, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
190253 INFO : concepteurs VB6 ne fonctionnent pas dans VB5
Pour plus d'informations sur le développement de solutions Web pour Microsoft Internet Explorer, reportez-vous au adresse aux sites Web de Microsoft aux adresses suivantes :
http://msdn2.microsoft.com/en-us/ie/default.aspx

http://support.microsoft.com/iep
(c) Microsoft Corporation 2001, Tous droits réservés. Contribution il b Sawant, Microsoft Corporation.

Propriétés

Numéro d'article: 302896 - Dernière mise à jour: lundi 25 décembre 2006 - Version: 11.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
Mots-clés : 
kbmt kbautomation kbhowtomaster KB302896 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 302896
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