IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Utiliser une dll c# depuis un script vbs


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Utiliser une dll c# depuis un script vbs
    Bonjour,
    Pour ce premier post sur le forum j’ai une question par rapport à la création de dll en c# et leur utilisations dans un autre langage. Pour être plus clair voici mon problème.

    Ma dll en c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    using System.IO;
     
    namespace MonNameSpace
    {
        public interface IClasse
        {
            string TestDLL();
        }
     
        public class Classe: IClasse
        {
            public Classe() {}
     
            public string IClasse.TestDLL()
            {
                return "Hello Friend";
            }
        }
    }
    Mon script appelant ma dll en vbs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim TestDll 
    Dim ReturnTest
     
    Set TestDll = WScript.CreateObject("MonNameSpace.Classe")
     
    Set ReturnTest = TestDll.TestDLL()
     
    WScript.Echo("Return : " + ReturnTest)
    WScript.StdIn.Read(0)
    J’ai commencé par créer une .dll c# sous visual studio en cochant bien la case « Make assembly COM-Visible » dans le menu Project => Property => Build => Assembly information . Maintenant lorsque je souhaite utiliser cette dll dans un script vbs, celui-ci me sort une erreur : « La classe Automation appelée « MonNameSpace.Classe » est introuvable. Merci d’avance pour votre aide.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Il ne suffit pas de marquer l'assembly comme COMVisible, il faut aussi l'enregistrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regasm /codebase TonAssembly.dll
    Est-ce que ca aide ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oui merci j’ai fini par trouver la solution... bon y’a quelque manip’ à faire quand même.

    Voici la solution que j’ai trouvé :
    - Créer un nouveau projet « class library » avec la version 4 du framework.NET
    - Dans « Projet -> Propriétés -> Application -> Informations de l’assembly » : cochez la case « Rendre l’assembly visible par COM »
    - Dans « Projet -> Propriétés -> Build » : cochez la case « S’incrire à COM Interop »
    - Quand la solution a été générer :
    o Copier/Coller la dll générer dans : o Ouvrir cmd.exe avec les droits Administrateur
    o Aller à l’emplacement où se trouve le regasm.exe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     C:\Windows\Microsoft.NET\Framework64\ " verison du framework "
    o Taper la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regasm.exe madll.dll /codebase
    o Puis générer le .tlb (type library file) de la dll avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regasm.exe madll.dll /tlb :madll.tlb
    En faisant sa j’ai réussi à appeler ma dll depuis un script vbs.

    PS : Voici aussi les liens qui m’ont permis de comprendre et d’y arriver :

    http://www.geeksengine.com/article/create-dll.html
    http://www.geeksengine.com/article/register-dll.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une DLL depuis un script Perl.
    Par AhyGoon dans le forum Langage
    Réponses: 1
    Dernier message: 07/04/2011, 10h55
  2. [XL-2003] Impossible d'utiliser une dll depuis excel
    Par bossun dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2009, 14h19
  3. [PB 10.2] Utilisation d'une DLL C# depuis PB 10.2
    Par jonas2003 dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 23/07/2007, 14h22
  4. Réponses: 7
    Dernier message: 13/01/2005, 10h30
  5. [DLL] utiliser une DLL a partir d' une DLL et un .def
    Par venomelektro dans le forum MFC
    Réponses: 9
    Dernier message: 07/12/2004, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo