CodeS-SourceS
Rechercher un code, un tuto, une réponse

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

Juin 2017


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

Publié par vince256.
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.
Utilisation du composant PropertyGrid
XNA Framework : Les bases de l'affichage 2D / Création d'un GameComponent