begin process at 2012 05 27 16:41:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GESTION DE PLUGINS AVEC PARTAGES DE FONCTIONS/VARIABLES PAR L'EXE + SDK (COMPATIBLE VC++ 6 ET 7, BORLAND C++, DELPHI, ASM)

GESTION DE PLUGINS AVEC PARTAGES DE FONCTIONS/VARIABLES PAR L'EXE + SDK (COMPATIBLE VC++ 6 ET 7, BORLAND C++, DELPHI, ASM)


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :29/04/2005 Date de mise à jour :30/04/2005 13:39:33 Vu / téléchargé :4 441 / 400

Auteur : darkpoulpo

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 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

  • 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;
  • }
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;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 avril 2005 00:47:30 :
mise a jour, juste pour l'appel de LoadPlugin()
30 avril 2005 09:19:26 :
j'ai modifié l'exemple, j'avais oublié d'initialiser la structure, jai refourgué un zip corrigé
30 avril 2005 13:39:33 :
jai placé la structure ans un fichier a part pour la partager entre toutes les sources du projet avec le mot clé extern

 Sources du même auteur

CONVERTIR CHEMIN RELATIF EN CHEMIN ABSOLUE (POUR DISQUE DUR)
SSCANF POUR SUPPRIMER DES ESPACES (COMME TRIM())
RECUPERER LE DNS DU SERVEUR MX MAIL D'UNE ADRESSE EMAIL
LISTE CHAINÉE (TEMPLATE, NOEUD LOCAL OU GLOBAL, INSERTION OU...
Source avec Zip ENCORE UN PARSER XML

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

Commentaires et avis

Commentaire de darkpoulpo le 29/04/2005 21:04:11

finalzement je vais quand meme faire un emise a jour pour gerer les script vbs et js, tampis si ca gere pas les fonctions de l'exe, certains dentre vous pourront quaund meme sen servir.

Commentaire de NoRabbit le 02/05/2005 22:54:43

he ben un grand merci, j'en cherchais une comme ça depuis longtemps !
elle fait partie de mes favoris !

Commentaire de darkpoulpo le 03/05/2005 14:55:08

pas de quoi!!! ;-), dommage que tu n'est pas voté, mais un commentaire c déjà ca

Commentaire de patemino le 05/05/2005 23:41:08

Lo à la recherche de vote....
Moi je trouve ça super !

Commentaire de v3n0m4 le 03/01/2008 21:37:51

gg mec
super example pour comprendre comment ca marche hehe.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales