Gestion de plugins avec partages de fonctions/variables par l'exe + sdk (compatible vc++ 6 et 7, borland c++, delphi, asm)

Description

Salut,

je sais que ya une gestion de plugin deja poster, mais elle me convenait pas du tout (et cetait un projet borland), alors je vous ai donné celle que j'utilise dans notre projet actuel.

elle permet :

- de partager des fonctions et des variables de l'executable
- de gerer la mises a jour des nouvelles fonctions/variables de l'exe a cours de sa vie
- d'etre compatible avec des plugins vc++ 6, 7, borland c++, delphi, et asm
- d'etre souple dans la gestion des plugins
- une gestion de passage de parametres entre plugin <-> executable pour lecture et sauvegarde
- de gerer des types de plugin (dans le source ya un exemple de type IMPORT)
- filtre les dll de type COM

les messages d'erreur et toutes les parties importantes pour ladaptation dans votre projet sont commentés, et un sdk explicatif est filé

jai voulu gérer les dll ActiveX de VB mais c trop la galere, et aussi les script vbs et js mais impossible de men servir correctement (pas moyen pour se servir des fonctions et variables partagées par l'exe)

Source / Exemple :


voici un exemple de l'executable 

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { CSystemPlugin CSP; CDll *dll=CSP.LoadPlugin("","pluginvcpp6.dll"); // "" c'est le chemin ou se trouve le plugin if (dll) CSP.AddPlugin(dll); dll=CSP.LoadPlugin("","pluginvcpp7.dll"); // "" c'est le chemin ou se trouve le pluginl if (dll) CSP.AddPlugin(dll); // jai trouvé personne pour men faire un //dll=CSP.LoadPlugin("","pluginborlandcpp.dll"); // "" c'est le chemin ou se trouve le plugin //if (dll) CSP.AddPlugin(dll); // pas pu le faire, je trouve plus mon compilateur mais je sais que ca marchera //dll=CSP.LoadPlugin("","plugindelphi.dll"); // "" c'est le chemin ou se trouve le plugin //if (dll) CSP.AddPlugin(dll); // ici on va lister tout les plugins unsigned int siz = CSP.Size(); int y; for (y=0;y<siz;y++) { dll = CSP.Get(y); // ou dll = CSP.Get(PLUGINIMPORT,y); pour lire que les plugins import if (!dll) continue; MessageBox(NULL,dll->GetName(),dll->GetInfoName(),MB_OK); //on appele une fonction du plugin if (dll->GetType() == PLUGINIMPORT) ((CDll_Import*)dll)->Fonction1("c'est un test de l'exe"); //ici on envoi des parametres du plugin dll->ReadParamBySystem("name","dark poulpo [dark team]"); dll->ReadParamBySystem("avatar","none"); // on recupere les parametres du plugin pour les sauver int i=0; bool ret = true; while(ret) { char blabla[2100]; char nom[1024]; char data[1024]; ret=dll->WriteParamBySystem(i,nom,data); sprintf(blabla,"%s : %s",nom,data); MessageBox(NULL,blabla,dll->GetInfoName(),MB_OK); i++; } } // bye CSP.UnloadPlugins(); return 0; }

Codes Sources

A voir également

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.