Ajouter fonction à .exe [Résolu]

FMatrix07 233 Messages postés mercredi 26 février 2003Date d'inscription 21 février 2009 Dernière intervention - 26 juin 2008 à 00:16 - Dernière réponse : Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention
- 26 juin 2008 à 05:22
Bonsoir,

J'ai développer un soft qui fonctionne maintenant correctement.
Mais il me vient une question, si je souhaite ajouter une fonction à mon soft sans avoir à recompiler ma source est ce possible ?

Je m'explique:
ex: mon soft aujourd'hui fait ouverture d'une form avec une liste box
demain je souhaite ajouter une deuxieme fontion au soft, ouverture d'une deuxieme form
mais je ne veux pas recompiler comment faire?

Je pensais à certain logiciel qui font un peu ça avec des plugings à telecharger mais je ne vois pas comment faire.

Si quelqu'un avait une idée, car mes recherches meme ici ne donne rien.

@+:

SCCréat

Mail: [mailto:Stephan.COCHET@hotmail.fr Stéphan.COCHET]
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 26 juin 2008 à 00:55
3
Merci
Salut
Oui, les plugins, pourquoi pas MAIS il faut le prévoir dans l'EXE d'origine.
Mais les plugins en VB6, j'ai jamais tenté, mais c'est surement coton (Voir les quelques codes à ce sujet avec la recherche)
Dans tous les cas, il te faudra recompiler et redistribuer

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 26 juin 2008 à 01:28
3
Merci
salut,

umm... pas besoin de recompiler, suffira juste de faire "propre" la première fois.
ex : toujours la même classe interface dans l'activex (plugin)  pour avoir la même architecture d'appel.

ensuite à chaque lancement l'exe liste toutes les dll du répertoire voulu, les enregistre, et comme les appels "de départ" sont les mêmes, roule ma poule

puis selon chaque plugin ils savent ensuite comment (se / ) quoi gérer.
par contre mieux vaut éviter de penser à la communication interplugins. le 3 qui fonctionne avec le 2.... qui peut ne pas exister

voir dans ma source SkinB2 (par exemple) pour le fonctionnement de dll enregistrées par l'exe. en l'occurrence je m'en sers comme simples ressources (pas de méthode) mais il y a les propriétés identiques pour chacune, avec le même nom de class etc...

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de PCPT
FMatrix07 233 Messages postés mercredi 26 février 2003Date d'inscription 21 février 2009 Dernière intervention - 26 juin 2008 à 04:14
0
Merci
Bonjour,
 
Merci de vos réponses, je me doutais bien que c'était avec des plugings mais maintenant il faut que je touve une source expliquant completement comment bien les utiliser.

Ce qui ne va pas etre simple !

Si vous en avez déjà vu ou utilisé n'hesitez pas à me le faire savoir

@+:

SCCréat

Mail: [mailto:Stephan.COCHET@hotmail.fr Stéphan.COCHET]
Commenter la réponse de FMatrix07
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 26 juin 2008 à 05:20
0
Merci
Salut FMatrix,
Je suis justement en train de développer une application avec laquelle je me suis initié à la gestion des plugins. En fait, j'avais commencé par un style "tout-plugin": mon exe n'était rien d'autre qu'un "splash-screen" et un lanceur de plugins. L'interface principale, les données et tout le reste était des composants chargé dynamiquement.
Mais comme le dit PCPT: "par contre mieux vaut éviter de penser à la communication interplugins.". En effet, c'était mon cas. Chaque composant communiquait avec les autres, et c'est vite devenu un gros bordel. J'ai donc très vite abandonné l'idée de faire une appli "tout-plugin" et j'ai créer une appli normale, ce qui à grandement réduit le code (Le support des plugins est encore présent). Mais tout dépend des cas aussi
Voici comment ça fonctionne dans mon appli (en simplifié):

Dans l'application, il y a:

1° L'architecture des plugins. Il s'agit de déclarer les propriétés et les méthodes du plugin.
Le plus simple pour la suite, c'est de créer une interface pour faire ça. L'inconvénient, c'est que tu ne pourra pas y ajouter de nouveaux membres par la suite.

Public Interface IPlugin
    ReadOnly Property Name As String   ' Nom du plugin
    Sub Load(TE As AppDatas)              ' Chargement des donnnée
    Sub Install()                                       ' Installation dans l'interface
End Interface

Tous les plugins devront donc implémenter cette interface pour pouvoir être chargé par le programme.

2° Le partage des données entre l'appli et les plugins. Ca peut être tout et n'importe quoi, dans mon cas il s'agit d'une classe comportant de nombreuses méthode et propriété pour pouvoir accéder aux interfaces graphiques, au données et à tous les autres éléments de mon application. Dans le cas suivant, les plugins pouront accéder à une ListView de l'interface principale:

Public Class AppDatas


    Friend Sub New(MainForm as frmMain)  
       Me.MainForm = MainForm
    End Sub
    Private MainForm as frmMain

    Public ReadOnly Property ListView As ListView
       Return MainForm.ListView1
    End Property

End Class

3° Le chargement des plugins:

       Dim DLLs As String() = IO.Directory.GetFiles([Dossier contenant les DLL], "*.dll")

        ' Parcourir chaque DLL
        For Each File As String In DLLs
            Try
                ' Charger l'assembly
                Dim dll As Reflection.Assembly = Reflection.Assembly.LoadFrom(File)
                Dim Types As Type() = dll.GetTypes

                ' Parcourir chaque type contenu dans la DLL à la recherche d'une
                ' classe implémentant IPlugin
                For Each tp As Type In Types
                    If tp.IsClass Then
                        If tp.GetInterface("IPlugin", True) IsNot Nothing Then
                            ' Une classe implémentant IPlugin à été trouvé, la charger
                            Try
                                Dim Plugin As IPlugin = dll.CreateInstance(tp.ToString)
                                Plugin.Load(Me.AppDatas)
                                Console.WriteLine(Plugin.Name & " à été chargé")
                            Catch ex As Exception
                                ' Erreur lors du chargement du plugin
                                MsgBox("Impossible de charger le composant '" & tp.Name & "' du fichier '" & File & "'" & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "Erreur")
                            End Try
                        End If
                    End If
                Next
            Catch ex As Exception
                ' Erreur lors du chargement de l'assembly
                MsgBox("Le fichier '" & File & "' n'est pas un assembly valide", MsgBoxStyle.OkOnly Or MsgBoxStyle.Critical, "Erreur")
            End Try
        Next

Et voilà
Commenter la réponse de Kevin.Ory
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 26 juin 2008 à 05:22
0
Merci
Harf.. on est en VB6

I'm sorry, It's because it's very very late 
Commenter la réponse de Kevin.Ory

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.