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 :

Interop c# VB


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut Interop c# VB
    Bonjour,

    Après avoir parcouru plusieurs forum et tuto je suis complètement dans le flou :

    Je cherche a développez une DLL en C# qui implémente une méthode static( qui devra simplement afficher une form par exemple), seulement pour créer un objet COM il faut que la classe implémente une interface(Wrapper a ce que j'ai compris) seulement les classe static ne peuvent pas implémenter d'interface, et les interface ne peuvent pas avoir de prototype static.

    Comment Faire ?

    Pour info cet dll est destiné a être utiliser en VB.

    Sinon si quelqu'un aurait un exemple d'une dll développez en c# et d'un code un VB qui l'utilisent je suis preneur.

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    question bête, pourquoi tu nr fais pas une classe static qui fait appel à la classe non static qui implémente cette interface?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    Je ne comprend pas très bien ce que tu veut dire :
    premièrement je n'ai pas besoin d'une classe non static pour mon traitement et deuxièmement je cherche justement a implémenter une classe static qui puissent être utilisé dans une dll ce que je n'arrive pas a faire puisque pour créer un objet COM il faut que la classe implémente une interface.

    Sinon si quelqu'un a simplement un exemple de code d'une dll en c# utilisé en VB cela m'aiderait grandement.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je ne comprends pas du tout pourquoi tu veux à tout prix utiliser une classe static.

    Peux tu préciser ce point ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    Tout simplement parce que mon traitement ne nécessite pas de créer un objet alors je cherchai a faire pour que l'utilisation de ma dll soit au plus simple dans le code VB.

    Mais voyant que je ne trouve aucune solution a ce problème je pense que je vais simplement faire une classe non static qui aura une méthode non static pour le traitement et dans mon code VB je créerait une instance de cette objet puis j'appellerai la méthode du traitement. Seulement ca non plu je n'arrive pas a le faire( faut dire que j'y connait pas grand chose en VB )

    est ce qu'il faut que j'ajoute ma dll au ressource du projet en VB ou que je l'apelle directement dans le code ?

    Quel serait la syntaxe pour l'appeler dans le code en VB si ma dll s'apelle TestDll, et ma classe TestClass

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Sub testObjet Lib "TestDll.dll" Alias TestClass
    ?

  6. #6
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    tu peux instancier n'importe quelle classe public qui se trouve dans la DLL, mais si tu aimes tant les classes statiques, tu fais appel à une classe statique qui instancie la classe qui implémente ton interface.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    Justement je n'arrive pas utiliser ma dll dans un code VB que la classe soit static ou non.

    oublions la classe static.

    ce qu'il me faudrait c'est un exemple de code d'une dll c# utiliser dans un code VB parceque franchement j'ai regarder pas mal de tuto y'en a pas 2 qui font la même chose et y'en a pas un qui marche.( après ca vient peut-etre de moi ).

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Franklin39 Voir le message
    ce qu'il me faudrait c'est un exemple de code d'une dll c# utiliser dans un code VB parceque franchement j'ai regarder pas mal de tuto y'en a pas 2 qui font la même chose et y'en a pas un qui marche.( après ca vient peut-etre de moi ).
    Vu le peu de monde qui travaile encore avec VB6, c'est pas étonnant.

    Ne touchant plus à VB depuis plus de 8 ans (comme la pluspart), je suis désolé mais je ne peux pas t'aider sauf en te confirmant que ta déclaration plus haut est fausse : tu n'as pas à déclarer une DLL COM si tu la met en resource (??? est-ce le bon terme, je ne sais plus ) dans le projet VB.

    Ceci dit, si ton traitement est aussi simple pourquoi ne le codes-tu pas en VB6 directement, ou dans une DLL C/C++ en exposant juste la fonction (que VB6 sait très bien utiliser, pas de soucis)

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    En fait moi je cherche a faire l'inverse : importer une dll C# dans du VB

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Par défaut
    BueDeep : Ceci dit, si ton traitement est aussi simple pourquoi ne le codes-tu pas en VB6 directement, ou dans une DLL C/C++ en exposant juste la fonction (que VB6 sait très bien utiliser, pas de soucis)
    En fait le traitement n'est pas simple il sert a communiquer avec une camera de vision industriel seulement la bibliothèque qui sert a communiquer est en c#, et je cherche simplement a pouvoir intégrer quelque actions simple avec la camera en VB puisque le traitement des résultat retourné par cette camera est deja programmé en VB.

  11. #11
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Vu le peu de monde qui travaile encore avec VB6, c'est pas étonnant.
    Beaucoup de personnes travaillent encore sur VB6 et Microsoft c'est vue obliger récemment de réouvrir la plateforme VB6 sur Msdn.
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par lilroma Voir le message
    Beaucoup de personnes travaillent encore sur VB6 et Microsoft c'est vue obliger récemment de réouvrir la plateforme VB6 sur Msdn.
    Bon sang !! et la reprise du support Windows 95 c'est pour quand ?

  13. #13
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Par défaut
    Citation Envoyé par Franklin39 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Sub testObjet Lib "TestDll.dll" Alias TestClass
    Ce genre de déclaration te permet juste d'utiliser des dll qui contiennent des procédures ou des fonctions qui sont dans des dll du type api win 32, et ce ne sont pas des dll COM.

    Citation Envoyé par Bluedeep
    Ne touchant plus à VB depuis plus de 8 ans (comme la pluspart), je suis désolé mais je ne peux pas t'aider sauf en te confirmant que ta déclaration plus haut est fausse : tu n'as pas à déclarer une DLL COM si tu la met en resource (??? est-ce le bon terme, je ne sais plus ) dans le projet VB.
    Pfiou... c'est vrai que ça nous rajeunit pas. De mémoire il faut que la dll COM soit enregistrée dans la base de registres (avec regsvr32.exe il me semble). Ensuite il faut l'ajouter dans les références du projet.

    Ensuite tu peux instancier les classes qui sont dans la dll:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim monObjet as MaClasse
    set monObjet = new MaClasse
    Voici un cours sur l'interop COM :
    http://dotnet.developpez.com/cours/interopcom/

Discussions similaires

  1. [C#] Comment deployer un COM Interop ?
    Par loverdose dans le forum C#
    Réponses: 12
    Dernier message: 27/04/2012, 12h01
  2. [Interop][C#] Comment implementer dll encapsulant du VBA ?
    Par Fredou1982 dans le forum C++/CLI
    Réponses: 4
    Dernier message: 13/12/2007, 13h19
  3. Réponses: 4
    Dernier message: 13/05/2006, 00h24
  4. Réponses: 6
    Dernier message: 30/03/2006, 15h15

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