48 votes

Comment créer un ActiveX (COM) en C #?

J'essaie de créer un contrôleur ActiveX. J'utilise VS2010 (.Net4) Je dois créer un objet COM (en C #) et je ne sais pas comment commencer (quel type de projet utiliser ect.)

Merci

70voto

Eyal Points 686

OK j'ai trouvé la solution et je vais l'écrire ici pour le bien commun.

  1. Début VS2010 en tant qu'administrateur.
  2. Ouvrir un projet de bibliothèque de classes (exemple - MyProject).
  3. Ajouter une nouvelle interface pour le projet (voir l'exemple ci-dessous).
  4. Ajouter un using System.Runtime.InteropServices; le fichier
  5. Ajouter les attributs InterfaceType, Guid de l'interface.
  6. Vous pouvez générer un Guid à l'aide d'Outils->Générer GUID (option 4).
  7. Ajouter une classe qui implémente l'interface.
  8. Ajouter les attributs ClassInterface, Guid, ProgId pour l'interface.
    ProgId convention est {namespace}.{classe}
  9. Sous les Propriétés du dossier du projet dans le fichier AssemblyInfo ensemble ComVisible de vrai.
  10. Dans le projet de menu propriétés, dans l'onglet création de la marque "Enregistrer pour COM interop"
  11. Construire le projet

maintenant vous pouvez utiliser l'objet COM en utilisant l'identificateur de Programme.

exemple: le code C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Runtime.InteropServices;

namespace Launcher
{

    [InterfaceType(ComInterfaceType.InterfaceIsDual), Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
    public interface ILauncher
    {
        void launch();
    }

    [ClassInterface(ClassInterfaceType.None), Guid("YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYY"), ProgId("Launcher.Launcher")]
    public class Launcher : ILauncher
    {
        private string path = null;

        public void launch()
        {
            Console.WriteLine("I launch scripts for a living.");

        }

    }
}

et VB script à l'aide de la COM:

set obj = createObject("PSLauncher.PSLauncher") obj.launch()

et la sortie sera:

J'ai lancer les scripts pour une vie

13voto

Darin Dimitrov Points 528142

Vous pouvez utiliser un projet de bibliothèque de classes. Déclarer un type avec des méthodes qui seront exposées comme un objet COM.

Assurez-vous que l'assemblage a été fait COM-visible:

alt text

Et enfin l'enregistrer à l'aide de regasm.exe:

regasm.exe /codebase mylib.dll

L'assemblage est maintenant exposée comme un objet COM et le type que vous avez déclarée peut être consommée par tout client qui prend en charge COM.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X