Interopérabilité .Net et COM / équivalent ActiveX exe avec .Net

Introduction

Cet article vous explique comment compiler votre application .Net pour l'utiliser ensuite avec des composants COM. Ceci vous permettra d'obtenir l'équivalent des fonctionnalités d'une application ActiveX exe faite en VB6.

Mode opératoire

Voici la méthode à suivre, en détails.

1. Créer un projet Windows Application en C#, J# ou VB.net
Ajoutez une méthode publique 'ShowMessage' qui sera utile ensuite.

public void ShowMessage()
{
    MessageBox.Show ("Hello !");
}

Compilez le. Vous obtenez alors un 'exe' qui est votre éxécutable.

2. Compilez le maintenant en Class Library
Dans les propriétés du projet, 'Common Properties'/'General', sélectionnez 'Output Type -> Class Library'. Vous obtenez maintenant une 'dll' qui est votre librairie de classes.

3. Activez l'interopérabilité COM
Toujours dans les propriétés du projet, commencez par sélectionner en haut à gauche la configuration 'All Configurations', puis dans 'Configuration Properties'/'Build' sélectionnez 'Register for COM interop -> True'. Recompilez, vous obtenez maintenant un fichier 'tlb' supplémentaire. C'est ce fichier que vous pourrez utiliser pour instancier votre application dans un environnement COM.

4. Générez la clé 'Strong Name' validant votre fichier 'tlb'

4.1 Référencement du répertoire bin du SDK Visual Studio .NET
Dans le panneau de configuration windows, ouvrez 'system' et allez dans le panneau des variables d'environnement. Dans 'System Variables', éditez la variable 'Path' en lui rajoutant le chemin du répertoire bin du SDK Visual Studio .Net. Ceci vous permettra ensuite d'utiliser les outils du SDK sans en préciser le chemin.

Par exemple pour Visual Studio .Net 2003 :
;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin

4.2 Utilisation du Strong Name Utility
Ouvrez ensuite le Command Prompt et tapez la commande suivante en mentionnant le chemin complet de votre application jusqu'au répertoire 'Release'. (COMInteropDemo.snk est le nom de la clé qui va être générée pour l'application COMInteropDemo).

C:COMInteropDemoCOMInteropDemobinRelease>sn -k COMInteropDemo.snk

Vous obtiendrez le résultat suivant :

Microsoft (R) .NET Framework Strong Name Utility  Version 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Key pair written to COMInteropDemo.snk

Voià ! Vous avez validé votre fichier 'tlb' vous permettant maintenant maintenant d'instancier votre application 'COMInteropDemo' à partir d'un composant COM !

5. Essayez d'instancier l'objet 'COMInteropDemo' dans une application COM tell que Visual Basic 6, Microsoft Excel, Agilent HPVee, etc ...
Pour les exemples suivants, nous utilisons Visual Basic 6.

5.1 Méthode référencée (Early Binding)
Commencez par référencer votre objet en allant dans 'Project'/'References' et cochez dans la liste 'COMInteropDemo'.

Testez ensuite le code suivant dans un formulaire VB6 :

Dim MyDemo As COMInteropDemo.Form1

Private Sub Form_Load()

'On instancie l'objet
Set MyDemo = New COMInteropDemo.Form1

'On le rend visible
MyDemo.Show

'On teste la methode 'ShowMessage'
MyDemo.ShowMessage
 
End Sub

5.2 Méthode non référencée (Late Binding)
Pas besoin de référencer l'objet. Testez le code suivant dans votre formulaire :

Dim MyDemo As Object

Private Sub Form_Load()

'On instancie l'objet
Set MyDemo = CreateObject("COMInteropDemo.Form1")

'On le rend visible
MyDemo.Show

'On teste la methode 'ShowMessage'
MyDemo.ShowMessage

End Sub

Conclusion

Vous pouvez maintenant ajouter des propriétés & méthodes publiques à votre application 'COMInteropDemo' et apprendre à vous en servir dans VB6 ou une autre application COM.

A voir également
Ce document intitulé « Interopérabilité .Net et COM / équivalent ActiveX exe avec .Net » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous